Ответ 1
Существует префикс ":", который позволяет вам указывать разные имена в ваших библиотеках. Если вы используете
g++ -o build/bin/myapp -l:_mylib.so other_source_files
должен искать ваш путь для _mylib.so.
У меня есть общая библиотека, которую я хочу связать с исполняемым файлом от использования GCC. В общей библиотеке есть нестандартное имя, а не форма libNAME.so, поэтому я не могу использовать обычный параметр -l. (Это также является расширением Python и поэтому не имеет префикса 'lib'.)
Я могу передать путь к файлу библиотеки непосредственно в командной строке ссылки, но это приводит к тому, что путь библиотеки будет жестко закодирован в исполняемый файл.
Например:
g++ -o build/bin/myapp build/bin/_mylib.so
Есть ли способ связать эту библиотеку, не вставляя путь в hardcoded в исполняемый файл?
Существует префикс ":", который позволяет вам указывать разные имена в ваших библиотеках. Если вы используете
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