Я пытаюсь статически связать библиотеку zstd (у меня есть libzstd.a или libzstd.so) с моей общей библиотекой libtest.so. Идея состоит в том, что при развертывании libtest.so в нашем приложении нам больше не нужно зависеть от libzstd.a или libzstd.so, поэтому мы должны статически связать библиотеку zstd.
Я пробовал это:
cc -fPIC -Wl,-soname=libtest.so -static-libgcc -shared -o libtest.so myobjects.o -ldl -lc -L/path/to/libzstd -l:libzstd.a
cc -fPIC -Wl,-soname=libtest.so -static-libgcc -shared -o libtest.so myobjects.o -ldl -lc -Wl,-Bstatic -L/path/to/libzstd -l:libzstd.a
cc -fPIC -Wl,-soname=libtest.so -static-libgcc -shared -o libtest.so myobjects.o -ldl -lc /path/to/libzstd/libzstd.a
Но все они дают мне эту ошибку:
/bin/ld: /path/to/libzstd/libzstd.a(zstd_common.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object;
recompile with -fPIC
/path/to/libzstd/libzstd.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [libtest.so] Error 1
В чем здесь проблема? Спасибо!