Libraries
安裝共享庫 - 問題和問題
我在“安裝”線上下載的共享庫時遇到問題。庫名稱是執行時訪問 (http://www.runtimeaccess.com/)。在快速入門指南中,他們解釋瞭如何在編譯時使用 -L 來定義庫位置並在添加庫目錄的路徑後導出 LD_LIBRARY_PATH 環境變數。首先,為什麼需要兩次定義 lib 位置?使用 -L 和 LD_Library_PATH 環境變數?
第二部分。我試圖避免傳遞這些參數並避免修改 LD_LIBRARY_PATH 環境,所以我所要做的就是像這樣編譯:
$ gcc myapp.c -lrtadb
所以我想將 lib 作為系統 lib 的一部分。所以我將整個
rta-0.8.1
文件夾複製到/usr/local/lib/rta-0.8.1
然後添加一個/etc/ld.conf.d/rtadb.conf
包含庫目錄路徑的文件/usr/local/lib/rta-0.8.1/src
。$ cat /etc/ld.so.conf.d/rtadb.conf #rta (run time access) lib /usr/local/lib/rta-0.8.1/src
然後我跑去
sudo ldconfig
更新共享庫列表——但沒有運氣。當我嘗試編譯我的程式碼時,找不到該庫:$gcc myappdb.c -lrtadb /usr/bin/ld: cannot find -lrtadb collect2: ld returned 1 exit status
我在這裡做錯了什麼?
這是 /usr/local/lib/rta-0.8.1/src 中的文件列表
user@ubuntu:/usr/local/lib/rta-0.8.1/src$ ls -l total 724 -rw-r--r-- 1 root root 24994 2012-11-14 10:49 api.c -rw-r--r-- 1 root root 26132 2012-11-14 11:07 api.o -rw-r--r-- 1 root root 62634 2012-11-14 10:49 do_sql.c -rw-r--r-- 1 root root 5419 2012-11-14 10:49 do_sql.h -rw-r--r-- 1 root root 41184 2012-11-14 11:07 do_sql.o -rw-r--r-- 1 root root 149186 2012-11-14 11:07 librtadb.a lrwxrwxrwx 1 root root 15 2012-11-14 11:07 librtadb.so -> librtadb.so.3.0 lrwxrwxrwx 1 root root 15 2012-11-14 11:07 librtadb.so.3 -> librtadb.so.3.0 -rwxr-xr-x 1 root root 117749 2012-11-14 11:07 librtadb.so.3.0 -rw-r--r-- 1 root root 2387 2012-11-14 10:49 Makefile -rw-r--r-- 1 root root 10962 2012-11-14 11:07 parse.output -rw-r--r-- 1 root root 21929 2012-11-14 11:07 parse.tab.c -rw-r--r-- 1 root root 425 2012-11-14 11:07 parse.tab.h -rw-r--r-- 1 root root 25064 2012-11-14 11:07 parse.tab.o -rw-r--r-- 1 root root 6711 2012-11-14 10:49 parse.y -rw-r--r-- 1 root root 46636 2012-11-14 10:49 rta.h -rw-r--r-- 1 root root 31551 2012-11-14 10:49 rtatables.c -rw-r--r-- 1 root root 17028 2012-11-14 11:07 rtatables.o -rw-r--r-- 1 root root 58843 2012-11-14 11:07 token.c -rw-r--r-- 1 root root 6291 2012-11-14 10:49 token.l -rw-r--r-- 1 root root 37996 2012-11-14 11:07 token.o
順便說一句,我正在執行 Ubuntu 10.04 LTS
謝謝你。
編輯:如果您不熟悉此資訊,請閱讀以下連結: http ://www.tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
您需要告訴在
ld
哪裡查找庫,因為它不在預設目錄之一中。由於連結器由 呼叫gcc
,因此請使用後者的-L
選項。gcc -lrtadb -L/usr/local/lib/rta-0.8.1/src
應該在你的情況下這樣做。