Упаковка библиотек boost в одну
От: ioni Россия  
Дата: 18.10.18 09:44
Оценка:
Коллеги
Может кто сталкивался (Ubuntu 18.04 x64 — Virtual Machine)
Собираю boost (под x64), с этим проблем нет

#!/bin/bash

./bootstrap.sh

./b2 link=static \
"sBUILD=<cxxflags>-std=c++11 <cxxflags>-fPIC " \
--without-coroutine \
--without-fiber \
--without-graph \
--without-graph_parallel \
--without-log \
--without-mpi \
--without-program_options \
--without-python \
--without-serialization \
--without-stacktrace \
--without-test \
--without-type_erasure
--without-wave


Далее делаю упаковку все в одно

export AR=ar

cd stage/lib
for l in *.a; do $AR -x $l ; done
$AR -qc libboost.a *.o ; rm *.o


Пытаюсь использовать(линковать к другим библиотекам) и получаю ошибки линковки типа такой

liboost.a(error_code.): relocation R_X86_64_PC32 against symbol .... can not be used when making a shared object; recompile with -fPIC


Причем если использовать отдельные библиотеки, то такая ошибка возникает гораздо позже при линковке выполняемого модуля

Статьи про PIC, типа этой "Position-independent code (PIC) в разделяемых библиотеках на x64" читал, но пока не помогло
может чего упустил?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.