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