Подтвердить что ты не робот

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

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

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

Например:

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Затем вы можете использовать -l_mylib

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