2015-06-08 3 views
1

У меня есть решение с различными проектами, одним из которых является главный исполняемый файл, а остальные - библиотеки, от которых зависит исполняемый файл. Каждый из них компилируется и связывается. Однако попытка запустить исполняемый файл дает странные результаты. Используя LDD, я вижу, что исполняемый файл пытается найти библиотеки, как так:Как предотвратить абсолютные пути в динамическом компоновщике

../bin/debug/libBlahBlah.so => not found 

Однако для каждого проекта, я объявляю «бен/отладки» (который является выходным каталогом для этих библиотек) как libdirs и связывание с библиотекой, добавив «BlahBlah» в качестве ссылки, где «BlahBlah» - это название проекта.

Я даже не уверен, как это сделать без премьеры. Любая помощь приветствуется.

Первоначальное намерение состояло в том, чтобы библиотека сидела рядом с исполняемым файлом, а затем установила RPATH, которая искала библиотеку рядом с исполняемым файлом. Так, как сейчас, он ищет этот абсолютный путь относительно исполняемого файла ... Я не могу понять, как его снять.

Я использую premake5. Я пытался использовать ночную и компиляцию. Однако в настоящее время не выполняется компиляция.

ответ

0

Если вы используете последний альфа или источник Premake5, вы можете использовать флаг «RelativeLinks» использовать -L/-l вместо относительных путей к библиотекам:

project "MyProject" 
    flags "RelativeLinks" 

Вы все еще должны правильно настройте rpath; вы можете сделать это с помощью buildoptions() и соответствующих флагов командной строки для вашего компилятора. Может быть (непроверен):

buildoptions "-Wl,-rpath=." 

Это должно работать и в Premake 4.

+0

Это исправило проблему. Я уже устанавливал rpath, но неважно, когда rpath применяется только после странного пути. Это фиксировало сильную головную боль. Большое спасибо. – computerquip

Смежные вопросы