2013-01-10 54 views
1
gcc 4.7.2 

你好,創建一個共享庫找不到​​APR-1

我試圖創建一個使用年利率(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 

我編從源頭年利率所以不屬於系統路徑。我已經將include和libs放在一個工具文件夾中,以便與該項目一起使用。

我的目錄結構是這樣的:

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圖書館。

我在這裏錯過了一個步驟。

非常感謝您的任何建議,

回答

1

您既可以通過目錄與rpath此連接器將目錄添加到運行時庫搜索路徑

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

或者使用LD_LIBRARY_PATH環境變量:

$ LD_LIBRARY_PATH=/path/tools/apr/lib ldd myprog 
+0

這是做這件事的最好的方式?謝謝。 – ant2009

+0

@ ant2009它取決於您的需求,第一個將路徑硬編碼到二進制文件中,第二個讓您可以在命令行上傳遞它。 – iabdalkader