Как связать использование, которое GCC без-l, ни жесткого кодирования соединяют каналом для библиотеки, которая не следует libNAME.so соглашению о присвоении имен?

У меня есть общая библиотека, что я хочу связать исполняемый файл против использования GCC. Общая библиотека имеет нестандартное имя не формы libNAME.so, таким образом, я не могу использовать обычную-l опцию. (Это, оказывается, также расширение Python и не префикс 'lib' - также.)

Я могу передать путь к файлу библиотеки непосредственно к командной строке ссылки, но это заставляет путь к библиотеке быть hardcoded в исполняемый файл.

Например:

g++ -o build/bin/myapp build/bin/_mylib.so

Существует ли способ связаться с этой библиотекой, не заставляя путь быть hardcoded в исполняемый файл?

42
задан David Nehme 30 June 2019 в 13:32
поделиться

3 ответа

Существует ":" префикс, который позволяет Вам давать различные имена своим библиотекам. Если Вы используете

g++ -o build/bin/myapp -l:_mylib.so other_source_files

, должен искать Ваш путь _mylib.so.

69
ответ дан David Nehme 26 November 2019 в 23:47
поделиться

Если можно скопировать общую библиотеку в рабочий каталог, когда g ++ вызывается тогда, это должно работать:

g++ -o build/bin/myapp _mylib.so other_source_files
2
ответ дан Robert Gamble 26 November 2019 в 23:47
поделиться

Если Вы находитесь на Unix или Linux, я думаю, что можно создать символьную ссылку на библиотеку в каталоге, Вы хотите библиотеку.

, Например:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

Вы могли тогда использовать -l_mylib

http://en.wikipedia.org/wiki/Symbolic_link

1
ответ дан Chris Roland 26 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: