Можно ли установить статические библиотеки из 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 опции.

Помните, что архивы проверяются только один раз, как указано в этом ответе, если некоторые символы все еще не найдены, вам, возможно, придется изменить порядок параметров.

Другие вопросы по тегам