Ошибка компиляции в C ++: неопределенная ссылка на `main 'collect2: ошибка: ld вернул 1 состояние выхода - PullRequest
1 голос
/ 09 февраля 2020

Команда, которую я запускаю в терминале Linux:

g++ -c main.cpp fraction.cpp ; g++ -WALL -o main.o fraction.o 

Полный вывод того, что возвращается:

/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-   
gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

main.cpp было написано мой профессор, и он проверяет наш класс дроби на это, поэтому в главном не должно быть ошибки.

1 Ответ

3 голосов
/ 09 февраля 2020
g++ -WALL -o main.o fraction.o

Эта команда указывает компилятору связать fraction.o и создать файл с именем main.o. За исключением того, что main.o был, конечно, результатом компиляции main.cpp.

Ваше очевидное намерение - связать оба main.o и fraction.o в новый исполняемый файл. Вам нужно указать имя исполняемого файла, который вы создадите sh, используя опцию -o, и только затем перечислите оба ваших объектных файла.

Но, разумеется, вам, вероятно, потребуется сначала перекомпилировать main.cpp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...