Создание общей библиотеки не может найти apr-1

gcc 4.7.2

Привет,

Я пытаюсь создать общую библиотеку, которая использует библиотеку apr (переносимая среда выполнения apache).

Однако, когда я делаю следующее, я получаю следующее:

ldd libjq.so
linux-gate.so.1 =>  (0xf777b000)
libdl.so.2 => /lib/libdl.so.2 (0xf774b000)
libapr-1.so.0 => not found
libc.so.6 => /lib/libc.so.6 (0xf7599000)
/lib/ld-linux.so.2 (0x4be59000)

Не могу найти:

libapr-1.so.0 => not found

Я скомпилировал apr из исходников, чтобы их не было в системном пути. Я поместил включаемые файлы и библиотеки в папку инструментов для использования в этом проекте.

Моя структура каталогов выглядит так:

projects/apr_queue/src/job_queue.c
projects/apr_queue/tools/lib/apr*
projects/apr_queue/tools/inc/apr*

Я компилирую и создаю объектный файл:

cc -c -m32 -Wall -Wextra -g -I../tools/apr/inc job_queue.c -D_LARGEFILE64_SOURCE -o job_queue.o

И создайте разделяемую библиотеку следующим образом:

cc -m32 -shared -o libjq.so -L../tools/apr/lib -lapr-1 job_queue.o

Нет никаких ссылок или ошибок компиляции. Просто не найдено для библиотеки apr-l.

Я пропустил шаг здесь.

Большое спасибо за любые предложения,


person ant2009    schedule 10.01.2013    source источник


Ответы (1)


Вы можете либо передать каталог компоновщику с помощью rpath, это добавит каталог в путь поиска библиотеки времени выполнения.

-Wl,-rpath,/path/tools/apr/lib

Или используйте переменную среды LD_LIBRARY_PATH:

$ LD_LIBRARY_PATH=/path/tools/apr/lib ldd myprog
person iabdalkader    schedule 10.01.2013
comment
Какой способ сделать это наиболее предпочтительным? Спасибо. - person ant2009; 10.01.2013
comment
@ant2009 ant2009 это зависит от ваших потребностей, первый жестко кодирует путь в двоичный файл, второй позволяет передать его в командной строке. - person iabdalkader; 10.01.2013