По умолчанию, libboostpython.a
составляется без -fPIC
, Но я должен сделать расширение Python, и это динамическая библиотека с -fPIC
это ссылки на статические библиотеки.
Как я могу скомпилировать статическую библиотеку (libboostpython.a
) с -fPIC
от boost.python
?
Есть несколько вариантов, которые вы можете использовать:
bjam ... cxxflags='-fPIC'
, Это скомпилирует каждый исходный файл форсирования как независимый от позиции код.'-Wl,-rpath,$ORIGIN'
флаг, так что когда динамический компоновщик ищет общие библиотеки, необходимые для вашего исполняемого файла, он ищет их в каталоге, где находится исполняемый файл. Увидеть man ld.so для более подробной информации о $ORIGIN
,Обратите внимание, что если вы уже запустили bjam, вам нужно сначала очистить цели
также полезно распечатать команды, применив -d + 2:
./bjam clean &&
./bjam -d+2 link=static cxxflags="-fPIC" install