Как связать статическую библиотеку (.a)
с libtool?
Я создаю модуль Apache (mod_shib_22.so
) который использует три библиотеки RSA libcertc.a
, libcertcsp.a
а также libbsafe.a
Я связываю эти библиотеки с -lcertc -lcertcsp -lbafe
но при загрузке модуля я получаю ошибки «Symbol undefined»:
./apachectl -k stop httpd: Syntax error on line 426 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/lib64/shibboleth/mod_shib_22.so into server: /usr/local/lib64/shibboleth/mod_shib_22.so: undefined symbol: T_GetDynamicList
Я использую эти строки в Makefile:
LDFLAGS = -L../../libraries/Crypto-C-6.4.0.3/lib/linux_lsb30_x86_64 -L../../libraries/Cert-C-2.9.0.0/lib/LinuxLSB30_x86_64/release_mt
LIBOBJS =
LIBS = -lxerces-c -L/usr/local/lib64 -llog4shib -lnsl -lcertc -lcertcsp -lbsafe -ldl
Связывание DSO (в данном случае модуля Apache) со статической библиотекой не гарантируется, и, вероятно, не будет работать в зависимости от того, как создаются объекты в статической библиотеке. Обычно объекты в статических библиотеках не создаются с позиционно-независимый код включен, но DSO требовать позиционный независимый код.
Других решений пока нет …