首页 文章

c编译问题

提问于
浏览
3

我正在尝试编译一个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 回答

  • 8

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

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

    为什么要编译头文件?

    我假设A.cpp包含dir / B.h - 因此您不需要单独的编译器调用来编译头 .

  • 3

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

相关问题