Я новичок в организации проектов C ++ и уже неделю пытаюсь запустить проект Open Dynamics Engine, но получаю несколько ошибок. Первое, что я сделал:
- Установлен ode-0.13.1 с automake, как указано в руководстве .
- Создан файл
test.cpp
с кодом из прыгающего мяча HOWTO .
- Написал make-файл для компиляции.
Но когда я запускаю свой make-файл, я получаю следующие ошибки:
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): в функции dxStepBody(dxBody*, double)':
/home/username/ode-0.13.1/ode/src/util.cpp:618: undefined reference to
sincos '
/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): в функции Opcode::AABBTree::Build(Opcode::AABBTreeBuilder*)':
/home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:413: undefined reference to
оператор new [] (unsigned long) '
/home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:427: неопределенная ссылка на 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: неопределенная ссылка на operator delete[](void*, unsigned long)'
/usr/local/lib/libode.a(OPC_Collider.o): In function
код операции :: 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
vtable для __cxxabiv1 :: __ class_type_info '
/usr/local/lib/libode.a(OPC_Collider.o):(.data.rel.ro._ZTVN6Opcode8ColliderE[_ZTVN6Opcode8ColliderE]+0x20): неопределенная ссылка на `__cxa_pure_virtual '
collect2: error: ld вернул 1 состояние выхода
makefile: 14: рецепт для цели 'test' не удался
make: *** [test] Ошибка 1
Эти ошибки, похоже, неправильно настроили библиотеку, но я почти уверен, что правильно установил, и мои -L имеют правильные пути.
Примечание 1: демонстрации, включенные в работу библиотеки ode.
Примечание 2: Я пытался (и не смог) установить другие версии ode ранее. Я приложил все усилия с make uninstall
и make clean
для очистки этих неудачных установок, но я думаю, что они могут повлиять на новые установки, потому что когда я запускаю sudo make install
в первый раз, появляется очень много сообщений Nothing to do here...
.