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,因此不在系统路径上。我已将include和lib放在一个工具文件夹中,以便与该项目一起使用。
我的目录结构如下所示:
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库。
我在这里错过了一步。
非常感谢任何建议,
答案 0 :(得分:1)
您可以使用rpath
将目录传递给链接器,这会将目录添加到运行时库搜索路径
-Wl,-rpath,/path/tools/apr/lib
或使用LD_LIBRARY_PATH
环境变量:
$ LD_LIBRARY_PATH=/path/tools/apr/lib ldd myprog