У меня в руках куча статических библиотек, каждая из которых имеет две версии — 32-битную и 64-битную.
Когда я использую эти статические библиотеки для компиляции в общую библиотеку, странные вещи
получилось:
1. Я использую 64-битные статические библиотеки для компиляции 64-битной разделяемой библиотеки, все работает хорошо;
2. Я использую 32-битные статические библиотеки для компиляции 32-битной разделяемой библиотеки, ld сообщает мне, что [текстовый раздел не доступен для совместного использования].
Итак, я предполагаю, что 32-битные статические библиотеки не используют флаг -fPIC, но мой коллега сказал мне, что он не должен добавлять флаг.
Но я все еще подозреваю, что есть способ узнать, добавляет ли статическая библиотека флаг -fPIC.
PS: я знаю, использование readelf или objdump может дать некоторые подсказки, но есть ли лучший способ?
Я считаю, что если вы используете Linux, вы можете проверить вывод file
file myLib.so
file myLib.a
Вывод должен сообщить вам, была ли библиотека скомпилирована с -fPIC