проблема компиляции c ++ - PullRequest
3 голосов
/ 09 сентября 2009

Я пытаюсь скомпилировать программу на С ++, чего я долгое время не делал ...

Я пытаюсь:

g++ -c A.cpp  -o A.o

g++ -c dir/B.h -o B.o

, которые, кажется, работают, и затем я пытаюсь:

g++ A.o B.o -o A -lX11 -lpthread

и получите:

B.o: файл не распознан: формат файла не распознан

collect2: ld вернул 1 статус выхода

В чем проблема?

Большое спасибо:)

Ответы [ 3 ]

8 голосов
/ 09 сентября 2009

Опустите аргумент -o при компиляции b.h, и вы, скорее всего, увидите что g ++ создает файл с именем b.h.gch, а не b.o. Этот файл это "предварительно скомпилированный заголовочный файл" Переименовав в b.o, вы ложь к последующему вызову g ++ о содержимом файла. Если b.h является заголовочным файлом, то вы должны включить это в a.cpp. Если b.h содержит определения функций, вы должны переименуйте его b.cpp.

3 голосов
/ 09 сентября 2009
g++ -c dir/B.h -o B.o

Почему вы компилируете файл заголовка?

Я предполагаю, что A.cpp включает dir / B.h - поэтому вам не нужен отдельный вызов компилятора для компиляции заголовка.

0 голосов
/ 09 сентября 2009

Вы компилируете файл заголовка. Ничего хорошего из этого не выйдет. : -)

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