Hi, all.
Собственно вопрос в следующем. Как слинковать в одно приложение статическую и динамическую библиотеки?
Ситуация такая. Есть приложение myapp.c ему нужна для работы моя библиотека libmylib.so and libxml2.so. При этом libmylib.so должна линковаться динамически и находиться в том же каталоге, что и myapp, а libxml2.so должна быть вкомпилена в myapp статически. До того, как я сделал libmylib.so, я работал с libxml2, и линковал её как динамически:
$gcc -o myapp myapp.c `xml2-config --libs`
, так и статически
$gcc -o myapp myapp.c -static `xml2-config --libs`
.
libmylib.so я тоже могу слинковать динамически. При попытке добавить ключ -static, линкер говорит, что lmylib не найдена, что, как я понимаю, правильно, т.к. у меня нет libmylib.a.
Обе библиотеки я могу скомпоновать динамически:
$gcc -c -o myapp.o myapp.c
$gcc -o myapp myapp.o -L. -lmylib -Wl,-rpath,./ `xml2-config --libs`
Но при попытке слинковать libmylib.so динамически, а libxml2 статически, я получаю Segmentation failed при запуске myapp, хотя компоновка проходит без проблем:
$gcc -c -o myapp.o myapp.c
$gcc -o myapp myapp.o -shared -L -lmylib -Wl,-rpath,./ -static `xml2-config --libs`
.
Как побороть?
Спасибо.
ЗЫ Принимаются любые советы, вплоть до поменять местами параметры(уже менял), поскольку свои идеи уже на исходе.