Можно ли установить статические библиотеки из apt в 18.04 x86_64?
Я пытаюсь построить проект, который зависит от двоичных распределенных статических библиотек.
Компоновщик жалуется, что не может найти ini_config
функции, среди прочего:
config_params.c:(.text+0x16f): undefined reference to `ini_get_config_valueobj'
Он находит динамические библиотеки, но не статическую версию:
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/libini_config.a failed
attempt to open /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libini_config.so succeeded
Эти файлы присутствуют на Debian Stretch. Есть ли способ получить их на Ubuntu?
1 ответ
Все пакеты, похоже, устанавливают свои статические библиотеки. Их можно найти в /usr/lib/x86_64-linux-gnu/
,
По-видимому, компоновщик сначала выбирает динамические библиотеки при использовании -lsomelib
, Чтобы изменить это, вы можете использовать -l:somelib.a
будет соответствовать только точному имени файла somelib.a
,
Для отладки фазы поиска библиотеки вы можете добавить -Wl,--versbose
к вашим LDFLAGS, gcc будет отображать каждый путь, который он пытается для вашего -lXXX
опции.
Помните, что архивы проверяются только один раз, как указано в этом ответе, если некоторые символы все еще не найдены, вам, возможно, придется изменить порядок параметров.