Nano Hash - криптовалюты, майнинг, программирование

Свежая установка движка физики пуль неправильно линкуется?

Имея относительно новую и свежую установку Ubuntu LTS, я следовал приведенным здесь инструкциям по созданию универсальной динамической библиотеки: http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Installation

Установка проходит гладко (без ошибок или предупреждений), после чего все необходимые файлы находятся в /usr/local/include/bullet. В настоящее время я пытаюсь скомпилировать файл из следующей команды оболочки:

g++ bulletTest.cpp -lGL -lGLU -I /usr/local/include/bullet/

bulletTest.cpp:

#include <iostream>
#include <btBulletDynamicsCommon.h>
int main (void)
{
    btBroadphaseInterface* broadphase;
    return 0;
}

В этом файле нет ничего интересного, но он выдает множество ошибок неопределенных ссылок, таких как "/tmp/ccH09wLR.o:(.rodata._ZTV17btTypedConstraint[_ZTV17btTypedConstraint]+0x30): неопределенная ссылка на `__cxa_pure_virtual'". другие жалобы на форумах/SO, поэтому я считаю, что это проблема с моей сборкой/установкой. Эти типы ошибок возникают при попытке использовать компиляторы gcc и g++.

У кого-нибудь есть идея?

РЕДАКТИРОВАТЬ: изменил мою команду оболочки на g++ bulletTest.cpp -lGL -lGLU -lBulletDynamics -lBulletCollision -lBulletSoftBody -lLinearMath -I /usr/local/include/bullet/

Он компилируется, но не запускается, ошибка: ошибка при загрузке общих библиотек: libBulletDynamics.so.2.82: невозможно открыть общий объектный файл: нет такого файла или каталога


  • Я считаю, что вам нужно связать файлы библиотеки физики пуль .a или .so, используя флаг, например -lbullet -L/usr/local/lib 16.06.2016
  • Он говорит, что нет такой библиотеки, как -lbullet 16.06.2016
  • Куда вы установили библиотеки libbullet.so (общая библиотека) и/или libbullet.a (статическая библиотека)? Взгляни. 16.06.2016
  • нет libbullet.so, но есть несколько подбиблиотек в /usr/local/lib под такими именами, как libBulletDynamics.so и libBulletDynamics.a Должен ли я вместо этого использовать lBulletDynamics? РЕДАКТИРОВАТЬ: да, хорошо, использование библиотек в форме -lBulletDynamics сработало. Спасибо за совет 16.06.2016
  • Да, вам нужно добавить библиотеку, содержащую символ btBroadphaseInterface. Я недостаточно знаком с этой библиотекой, чтобы сказать вам, какая именно. Самый простой способ проверить — использовать команду binutils strings, чтобы увидеть, где встречается эта строка. 16.06.2016

Ответы:


1

Так что было много мелочей. Во-первых, не ссылайтесь на «lbullet» на каждую из необходимых библиотек:

g++ bulletTest.cpp -o bulletTest -lGL -lGLU -lBulletDynamics -lBulletCollision -lBulletSoftBody -lLinearMath -I /usr/local/include/bullet/

Кроме того, мне пришлось установить переменную LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib

а затем он будет компилироваться и запускаться.

16.06.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..