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

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

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

Например:

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

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

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

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

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

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

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

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

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

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

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

Давайте будем гением компьютера.