c ++编译问题

时间:2009-09-09 14:59:31

标签: c++ compilation

我正在尝试编译一个c ++程序,这是我很久没有做的事情......

我正在尝试的是:

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 个答案:

答案 0 :(得分:8)

编译b.h时省略-o参数,您可能会看到 g ++创建一个名为b.h.gch而不是b.o的文件。那个文件 是一个“预编译的头文件”。通过在b.o中重命名,你就是 说谎后续调用g ++关于内容 的文件。如果b.h是头文件,那么你应该包括 它在a.cpp中。如果b.h包含函数定义,则应该 将其重命名为b.cpp。

答案 1 :(得分:3)

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

为什么要编译头文件?

我假设A.cpp包含dir / B.h - 所以你不需要单独的编译器调用来编译头文件。

答案 2 :(得分:0)

您正在编译头文件。没有好处可以来。 : - )