Назад | Перейти на главную страницу

LDD не может найти библиотеку на бит Sol11_64

Мы успешно компилировали с gcc на Solaris 10. Теперь мы переносим на 64-битную версию Solaris 11 (sol11_64). Мы используем разработанную нами библиотеку под названием MSP и используем -wl, rpath (эквивалент -R ... также пробовал с -R) во время компиляции, чтобы указать расположение библиотек времени выполнения. На sol10 вывод LDD показывает 2 из 2 найденных библиотек MSP. На sol11_64 теперь в выводе LDD показаны 3 библиотеки, при этом новая не может быть найдена, даже если она находится в том же месте, что и одна из других. Если я добавлю это местоположение в свой 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*

Поскольку эта библиотека внезапно стала новой зависимостью от 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)