Как создать статически связанное приложение со статическими библиотеками с поддержкой PIC

У меня есть статически связанное приложение (sample.a), и я хочу создать его с помощью сторонней библиотеки (Third-Party-lib.a), для которой включена PIC. Обратите внимание, что сторонняя библиотека НЕ ​​является общей библиотекой. Это статическая библиотека с поддержкой PIC.

Кто-нибудь может подсказать, пожалуйста, как мне это сделать?

Я попытался связать свою библиотеку со сторонней библиотекой, как мы обычно связываем статические библиотеки, но это дает мне ошибку:

/usr/lib/libc_nonshared.a(stack_chk_fail_local.oS): в функции __stack_chk_fail_local': (.text+0x10): undefined reference to__stack_chk_fail"

Заранее спасибо.

1 ответ

Я бы предложил использовать nm, чтобы попытаться найти соответствующие символы. Хорошей идеей будет также проверить, нет ли #define, о котором вам нужно позаботиться или что-то подобное. Сама по себе статическая библиотека с поддержкой PIC не должна ничего менять при компоновке, если вы компилируете и остальную часть программы с -fPIC.

В целом, это не кажется мне чем-то вызванным настройками PIC. Вы случайно создавали код ранее с динамическими библиотеками, и только теперь переключились на статические? Это могло бы объяснить, среди прочего, отсутствие некоторых элементов конфигурации.

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