LDD не может найти библиотеку по биту sol11_64
Мы успешно компилировали с gcc на Solaris 10. Теперь мы переносим на 64-битную версию на Solaris 11 (sol11_64). Мы используем библиотеку, разработанную собственными силами под названием MSP, и используем -wl, rpath (эквивалентно -R... также пытался с -R) во время компиляции, чтобы указать расположение библиотеки времени выполнения. На sol10 вывод LDD показывает 2 из 2 найденных библиотек MSP. На sol11_64 теперь есть 3 библиотеки, показанные в выводе LDD, с новой, которую невозможно найти, даже если она находится в том же месте, что и одна из других. Если я добавлю это местоположение в свой LD_LIBRARY_PATH, то LDD поднимет его. Мы НЕ хотим использовать LD_LIBRARY_PATH в качестве постоянного решения.
выход sol10 LDD:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
Вывод sol11_64 LDD:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
libfmq-crtl-ssl.so => (file not found)
Вывод sol11_64 LDD с путем в LD_LIBRARY_PATH:
libmsp.so => /opt/msp/lib/fiorano/libmsp.so
libfmq-crtl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl.so
libfmq-crtl-ssl.so => /opt/msp/lib/fiorano/vendor-files/lib/libfmq-crtl-ssl.so
Я проверил разрешения:
-rwxr-xr-x 1 root root 2.0M Dec 18 17:49 libfmq-crtl-ssl.so*
-rwxr-xr-x 1 root root 2.0M Dec 18 17:49 libfmq-crtl.so*
1 ответ
Поскольку эта библиотека неожиданно стала новой зависимостью от sol11_64, мне нужно было добавить ее в другое место нашего make-файла, в частности, в нашу переменную LIBS, которая передается во время компоновки вместе с путями библиотеки времени выполнения. Я думаю, что эта часть говорит о том, какие библиотеки на самом деле искать.
До:
LIBS := -lpthread -lmsp -lfmq-crtl -lxml2
После:
LIBS := -lpthread -lmsp -lfmq-crtl -lfmq-crtl-ssl -lxml2
цель makefile:
$(EXE): $(MACHOBJ) $(MACH)/main.o
cd $(MACH); $(CC) -o ../$@ $(OBJ) main.o \
../../lib/$(MACH)/libmain.a \
-L/opt/msp/lib/fiorano \
-L/opt/msp/lib/fiorano/vendor-files/lib \
-R/opt/msp/lib/fiorano \
-R/opt/msp/lib/fiorano/vendor-files/lib \
$(MACHLFLAGS) $(LIBS) $(MACHLLIBS)