Libraries

安裝共享庫 - 問題和問題

  • November 14, 2012

我在“安裝”線上下載的共享庫時遇到問題。庫名稱是執行時訪問 (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

應該在你的情況下這樣做。

引用自:https://unix.stackexchange.com/questions/55740