我是组织 C++ 项目的初学者,我已经尝试启动 Open Dynamics Engine 项目一周了,但我一直遇到几个错误。首先,我做了什么:
- 按照手册中的指示使用 automake 安装 ode-0.13.1 。
- 使用弹跳球 HOWTO
test.cpp
中的代码创建了一个文件。 - 写了一个makefile来编译。
但是当我运行我的 makefile 时,我收到以下错误:
gcc -Wall -g -DdDOUBLE -o test test.o -L/home/username/ode-0.13.1/ode/src/libode.la -L/home/username/ode-0.13.1/drawstuff/src/ libdrawstuff.la -L/usr/X11R6/lib -L/usr/lib -L/usr/local/lib -I。-I/home/username/ode-0.13.1/include/ -I/usr/X11R6/include -I/usr/include -lm -lode -lGL -lGLU /usr/local/lib/libode.a(collision_trimesh_box. o): 在函数
dCalcVectorLength3': /home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: undefined reference to
sqrt'/home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: 未定义对sqrt' /home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: undefined reference to
sqrt'/usr/local/lib/ 的引用libode.a(util.o):在函数 sincosdxStepBody(dxBody*, double)': /home/username/ode-0.13.1/ode/src/util.cpp:618: undefined reference to
'/home/username/ode-0.13.1/ode/src/util.cpp:630:未定义对sincos' /home/username/ode-0.13.1/ode/src/util.cpp:628: undefined reference to
sqrt' /home/username/ode-0.13.1/ 的引用ode/src/util.cpp:590:未定义对“sqrt”的引用
...(这一直持续到页面)
/usr/local/lib/libode.a(OPC_AABBTree.o):在函数运算符 new[](unsigned long)' /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:427:未定义的操作码
Opcode::AABBTree::Build(Opcode::AABBTreeBuilder*)': /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:413: undefined reference to
引用operator new[](unsigned long)' /usr/local/lib/libode.a(OPC_AABBTree.o): In function
::AABBTreeNode::~AABBTreeNode()': /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:83: undefined reference tooperator delete[](void*, unsigned long)' /usr/local/lib/libode.a(OPC_Collider.o): In function
Opcode::Collider::~Collider()': /home/username/ ode-0.13.1/OPCODE/OPC_Collider.cpp:54:未定义operator delete(void*, unsigned long)' /usr/local/lib/libode.a(OPC_Collider.o):(.data.rel.ro._ZTIN6Opcode8ColliderE[_ZTIN6Opcode8ColliderE]+0x0): undefined reference to
对 __cxxabiv1::__class_type_info'/usr/local/lib/libode.a(OPC_Collider.o):(.data.rel.ro._ZTVN6Opcode8ColliderE[ _ZTVN6Opcode8ColliderE]+0x20):未定义对 `__cxa_pure_virtual' collect2 的引用:错误:ld 返回 1 退出状态 makefile:14:目标 'test' 的配方失败 make:*** [test] 错误 1
这些错误似乎库没有正确设置,但我很确定我已经正确安装并且我的 -L 设置为正确的路径。
注 1: ode 库中包含的演示可以工作。
注意 2:我之前曾尝试(但失败)安装其他版本的 ode。我尽力清理make uninstall
并make clean
清理了这些失败的安装,但我认为它们可能会影响新安装,因为当我sudo make install
第一次运行时,会出现大量Nothing to do here...
消息。