[問題] 如何得知所有LIBRARY的連結

看板Linux作者 (冷板凳)時間11年前 (2014/09/30 16:28), 編輯推噓1(1012)
留言13則, 4人參與, 最新討論串1/1
使用GCC寫C時,需要用math.h 所以編譯時GCC指令需要加入 -lm,才能夠連結到math.h 突然想到如何得知所有library的連結方式和位置 這樣可以先尋找出library,並加以連結 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.120.36 ※ 文章網址: http://www.ptt.cc/bbs/Linux/M.1412065690.A.981.html

09/30 17:11, , 1F
你可以在gcc編譯時加上-v它就會跑出它是怎麼編的
09/30 17:11, 1F

09/30 17:12, , 2F
你就可以看到它怎麼呼叫像ld和collect2做連結
09/30 17:12, 2F

10/01 15:53, , 3F
一般 unix 的 math library 都是放在libm.xxxx 裡面
10/01 15:53, 3F

10/01 15:54, , 4F
所以你要使用得自己用 -lm 指定連結使用 libm
10/01 15:54, 4F

10/01 15:57, , 5F
不同的程式庫提供不同的檔案,有些程式庫提供太多
10/01 15:57, 5F

10/01 15:57, , 6F
可以連結的檔案,比方 glib,ncurses 等項目他們都提供
10/01 15:57, 6F

10/01 15:57, , 7F
額外工具提供呼叫提供資訊。比方 ncurses 的話
10/01 15:57, 7F

10/01 15:59, , 8F
有個 ncurses5-config 可以呼叫執行使用
10/01 15:59, 8F

10/01 15:59, , 9F
ncurses5-config --libs 就可以所需要的結果
10/01 15:59, 9F

10/01 16:01, , 10F
ex: gcc $(ncureses5-config --libs) xxxx.c 這樣用
10/01 16:01, 10F

10/01 21:25, , 11F
有很多 library 可以用 pkg-config 查
10/01 21:25, 11F

10/01 21:25, , 12F
pkg-config --libs 名稱
10/01 21:25, 12F

10/02 17:20, , 13F
簡單來說,RTFM
10/02 17:20, 13F
文章代碼(AID): #1KAccQc1 (Linux)