«неопределенная ссылка на *» Ошибка при компиляции файла, который использует Open Dynamics Engine v0.13.1 - PullRequest
2 голосов
/ 21 марта 2019

Я новичок в организации проектов 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....

...