我正在尝试编译一个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退出状态
有什么问题?
非常感谢:)
答案 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)
您正在编译头文件。没有好处可以来。 : - )