Ошибка при соединении с g ++ - PullRequest
2 голосов
/ 20 апреля 2010

Я пытаюсь скомпилировать и связать свое приложение в 2 этапа:

Компиляция:

g ++ -c -o file1.o file1.cc general_header.h
g ++ -c -o file2.o file2.cc general_header.h
g ++ -c -o file3.o file3.cc general_header.h

Связь:

g ++ -o myApp file1.o file2.o file3.o

Я получаю ошибку ссылки следующим образом:

file1.o: файл не распознан: формат файла не распознан
collect2: ld вернул 1 статус выхода

Я что-то не так делаю?

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 апреля 2010

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

g++ -c file1.cc 

и тогда вы также можете сказать:

g++ -c file1.cc file2.cc file3.cc
2 голосов
/ 20 апреля 2010

Нет необходимости включать файлы заголовков в список входных файлов

g++ -c -o file1.o file1.cc

...