GCC和包含文件故障

时间:2014-10-05 05:37:24

标签: c++ gcc compiler-errors include

我在为物理引擎Bullet Physics编译一段C ++代码时遇到了一些困难,并希望得到一些建议。

这是我第一次使用gcc作为编译器,并且包括一般编译的目录,所以我将给出解决问题的整个过程,因为我不确定我哪里出错了或相关信息是什么。

当我第一次尝试编译代码时,我收到了关于“没有这样的错误或目录”的致命错误,因此我决定使用-I选项(1)添加目录。它修复了第一个错误,但另一个突然出现了。再次,我能够使用-I选项使错误消失到所需目录(2)。

然后我得到了一长串错误,如下所示:

  

main.cpp :(。text + 0x33):未定义引用'RagdollDemo :: initPhysics()'

     

main.cpp :(。text + 0x84):未定义引用'glutmain(int,char **,int,int,char const *,DemoApplication *)'

     

/tmp/cc4MqhHm.o:在函数'__static_initialization_and_destruction_0(int,int)'中:   main.cpp :(。text + 0xe7):对`std :: ios_base :: Init :: Init()'的未定义引用

我尝试了一些不同的东西,但解决方案最终使用我的家庭项目符号文件夹(或usr / local / include / bullet /)和--sysroot选项(3)。

这为C ++头文件创建了很多错误,然后我用-I(4-5)链接了几个目录,但是在添加了一个目录之后又出现了同样的一组错误我以为我解决了再次弹出--sysroot的问题(6)。

我不知道现在该做什么。我猜想将bullet文件夹声明为我的根目录使得编译器无法在我的实际根目录中找到所需的C ++文件,但我不知道该怎么办...当我尝试包含C ++文件时我需要,编译器似乎忘了我告诉它使用子弹作为我的根。

我放弃之前尝试的最终编译并意识到寻求帮助可能比花3个小时查看文档更好,而不知道确切的问题是什么。数字对应上述步骤。

gcc (3)--sysroot=/home/josh/bullet-2.82-r2704/ (1)-isystem/home/josh/bullet-2.82-r2704/Demos/OpenGL/ (2)-isystem/home/josh/bullet-2.82-r2704/src/ (4)-I/usr/include/ (5)-I/usr/include/c++/4.8 (6)-I/usr/include/x86_64-linux-gnu/c++/4.8/ ./main.cpp

我正在使用Ubuntu 14.04 LTS和我的操作系统以及emacs 24.3.1作为我的IDE。

非常感谢任何帮助。

最佳, 约什

1 个答案:

答案 0 :(得分:0)

您所看到的不是include问题。链接器无法与符号链接。您需要链接到适当的库,例如lglut