![]() |
|
Модераторы: bsa |
![]()
|
|
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
Здравствуйте! Осваиваю программирование и С++ в частности. Надеюсь на содействие.
Тему создал с целью публиковать в ней нубские вопросы и не плодить новых тем. Вопрос №1: Простейший код HelloWorld.сpp не компилируется GCC в Debian (пишет, что есть ошибки). Мне сложно понять в чем именно может быть ошибка в ниже описанно элементарном коде на C++.
Но при попытке запустить в терминале команду gcc /home/debian/Experimental/gcc/Hello.cpp -o /home/debian/Experimental/gcc/Hello, терминал выводит на экран консоли следующие сообщения об ошибках: debian@debian:~$ gcc /home/debian/Experimental/gcc/Hello.cpp /tmp/ccPiPmej.o: In function `main': Hello.cpp:(.text+0xa): undefined reference to `std::cout' Hello.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' Hello.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' Hello.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' /tmp/ccPiPmej.o: In function `__static_initialization_and_destruction_0(int, int)': Hello.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()' Hello.cpp:(.text+0x59): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld returned 1 exit status Не понимаю, что именно не нравится gcc и что оно от меня хочет? P.S. Сейчас читаю нубские темы данной ветки форума, поэтому прошу не выражаться и не посылать меня их читать. Спасибо за понимание! |
|||
|
||||
| rudolfninja |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Здравствуйте.
Вы перед функцией main объявили компилятору, что хотите использовать функции из пространства имен std:
После этой строки все стандартные функции будут выполняться из этого пространства имен. Далее при выводе на экран вы явно указываете, что используете std::cout
Таким образом, компилятор в пространстве имен std пытается найти еще одно пространство имен std, не находит и не знает откуда взять эти функции. То есть, если вы написали using namespace std, то явно указывать пространство имено перед функцией не надо. Хотя, если вы только начинаете, то не пытайтесь вникать в пространство имен и область видимости. Исправьте строку с выводом на экран на такую:
Это сообщение отредактировал(а) rudolfninja - 1.6.2015, 15:18 |
||||||
|
|||||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Это не поможет. Компилятор достаточно умный, что бы искать не только в namespace'ах, упомянутых в using namespace, но и напрямую от корня. Ошибка не в программе, а в процессе компиляции. Если приглядется к выдаче с ошибками, то видно, что ошибки валятся не от компиляции, а от линковки. Исправить это просто:
При линковке с помощью gcc он подает на линковку только С библиотеки, а std::cout, который вы использовали, находится в С++ библиотеке. Так что линковать надо с помощью g++ |
||||
|
|||||
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
rudolfninja, спасибо за ответ!
Исправил строку в примере как Вы и подсказали, но к сожалению, эффект от запуска и компиляции остался тем же.
Сейчас гуглю undefined reference to нашел сообщения на тему некоего Code Blocks, буду читать и разбираться, а то первый камень в начале познания и тот в простейшем примере.. попробую запустить код в visual studio. |
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
xvr, спасибо, я вас понял =)
Добавлено @ 15:30 codevias, смотрите что написал xvr. Исправьте эту строку на
Только сначала подключите stdio.h Или компилируйте так, как сказал xvr. Это сообщение отредактировал(а) rudolfninja - 1.6.2015, 15:31 |
|||
|
||||
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
xvr, пробовал вписывать в начале команды g++, но консоль ругается, что такой команды нет.
GCC устанавливал командой - "aptitude install gcc". Что такое "линковка"? rudolfninja, и что у C++ в разных системах разные функции для вывода? P.S. Выбрал дебиан решив, что если справлюсь с освоением этой системы, то и с остальными ubuntu, fedora и прочих проблем не будет, но как работать с ОС у которой в GCC после установки нет g++ внутри.. Это сообщение отредактировал(а) codevias - 1.6.2015, 15:37 |
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
Странно, что выбрав debian вы выбрали C++, а не C =) В большинстве, у пользователе линукса в целом идеология такая, что они C++ редко используют =) Большинстов матерых линукс-программистов пишут на C. |
|||
|
||||
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
rudolfninja, хочу приложения писать на C++, о системном программировании я не задумывался, когда выбирал Debian, хотел найти альтернативу Windows, которая после долгого использования показалась мне намного приятней, шустрее и лучше. После GCC планировал перейти на qt или что нибудь подобное, конкурента дорогой VS. С освоением того же python, проблем не возникло, его стандартный IDLE работает в debian "без сучка, без задоринки". А вот с C++ вообще беда, но всё равно хочу его, он превосходит Python и компилируемый. Ubuntu и лоли-дистры мне пока не интересны, а то буду как в Windows сидеть, решение проблем в которой - это перезагрузка.
Это сообщение отредактировал(а) codevias - 1.6.2015, 15:49 |
|||
|
||||
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 341 Регистрация: 19.2.2013 Где: г. Минск Репутация: 1 Всего: 6 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
gcc - это целый набор компиляторов. Видимо С++ у базу не входит (точнее компилятор входит, а вот библиотеки видимо нет)
Попробуйте aptitude install g++ |
|||
|
||||
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
rudolfninja, спасибо большое!
xvr, попробовал, заработала шарманка! Скомпилировал и запустил, всё работает. Всем кому могу презентую плюсик! Не могу, надо 100 постов набить. Ничего, время есть, наскребу сотню другую вопросов. Это сообщение отредактировал(а) codevias - 1.6.2015, 16:04 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
makefile (в отличие от gcc) по умолчанию знает какие библиотеки подключать когда ваши проекты станут больше, будете пользоваться какой-нибудь ide, или научитесь писать свои файлы для make |
|||
|
||||
| codevias |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 1.6.2015 Репутация: нет Всего: нет |
baldina, спасибо, буду знать. Cmake случаем не того же поля ягода?
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
того
|
|||
|
||||
| konshyn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 19.9.2013 Репутация: нет Всего: нет |
вообще-то, gcc - это компилятор С. а вот GCC (аббревиатура) - это коллекция компиляторов. Туда входят и gcc и g++. GCC и gcc путают многие. -------------------- «Потому что ценность акта действия в этой стране возрастает в несколько раз». |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |