Как связаться с общей библиотекой без lib* префикс в другом каталоге? [дубликат]

Вы уверены, что не смешиваете вкладки и пробелы в Вашем пробеле добавления отступа? (Который вызовет ту ошибку.)

Примечание, рекомендуется не использовать вкладки в коде Python. Посмотрите руководство по стилю . Необходимо настроить Блокнот ++ для вставления пробелов для вкладок.

10
задан 20 August 2009 в 10:34
поделиться

2 ответа

-Wl, -rpath ,. -> использовать текущий каталог для поиска файлов библиотеки. (даже если не найден в компиляции, нормально во время выполнения) вместо -llibrary -> используйте library.so.

Кажется, это работает правильно. Надеюсь, кто-нибудь сочтет это полезным.

7
ответ дан 3 December 2019 в 18:35
поделиться

Предполагая платформу ELF, если вы можете перестроить foo.so :
- лучшее исправление - просто назвать его libfoo.so
- следующее лучшее исправление - установить для него SONAME :

  gcc -Wl,-soname,foo.so -o foo.so foo.o

, когда вы позже свяжетесь с:

  gcc -o a.out a.o /path/to/foo.so

только SONAME будет записан как зависимость, а не полный /path/to/foo.so .

Если вы не можете перестроить foo.so , затем сделайте следующее:

  rm -f foo.so && ln -s /path/to/foo.so foo.so &&
  gcc -o a.out a.o ./foo.so && rm -f foo.so
14
ответ дан 3 December 2019 в 18:35
поделиться
Другие вопросы по тегам:

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