Re: [問題] -l 和 -L 之用法

看板LinuxDev作者 ( 殺手哥吉拉 13)時間16年前 (2009/09/22 02:29), 編輯推噓5(504)
留言9則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《godman362 (青)》之銘言: : 關於這個問題,我已經有參考過版上的#43篇文章 : 不過仍有些疑問想提出來 : 假設,在我的/usr/lib或是/lib中有一個libpng.a : 這個是適用於X11的lib : 而我有自行cross compile一個libpng.a,是放在/home/username/lib中 : 那我實際上要用的,是我自行編譯的lib : 也就是放在/home/username/lib中自行編譯的lib : 所以我應該作下列哪一種的編譯方式: : 一、 : gcc -o png png.c -L/home/username/lib -lpng : 二、 : gcc -o png png.c -L/home/username/lib : 三、 : gcc -o png png.c -lpng -L/home/username/lib : 還請各位先進指點一下,謝謝 -L 是增加搜尋路徑,會擺在預設的搜尋路徑前面 man gcc 看 LIBRARY_PATH 的部份 GCC also uses these directories when searching for ordinary libraries for the -l option (but directories specified with -L come first). 所以不論哪一種都可以動! 其實你也可以直接指定你的 libpng.a gcc -o png png.c /path/to/your/libpng.a -- 有一天小明跟朋友打牌,有張牌不小心掉進水裡。此時女神出現了 女神:「你掉的是這張紅中,還是這張白板?」 小明:「都不是,我掉的是青發。快還我吧大嬸,我缺那張牌就自摸了」 女神:「.................(不爽)」 「你真是誠實的好孩子,紅中跟白板都送你吧」 於是小明就相公了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.131.211

09/22 10:10, , 1F
那假設我輸入:gcc -o png png.c -lpng
09/22 10:10, 1F

09/22 10:11, , 2F
這樣的話,他是否直接去找系統預設,而非我自己編譯的
09/22 10:11, 2F

09/22 13:09, , 3F
gcc -o png png.c -lpng (不管有沒有加-L) 是dynamic link
09/22 13:09, 3F

09/22 13:10, , 4F
也就是說,gcc會去找libpng.so,而不是libpng.a
09/22 13:10, 4F

09/22 13:12, , 5F
此文最後一行 gcc -o png png.c /path/to/your/libpng.a為
09/22 13:12, 5F

09/22 13:12, , 6F
正解
09/22 13:12, 6F

09/22 23:07, , 7F
-l是dynamic link,*.a是static link用的lib~~
09/22 23:07, 7F

09/23 03:49, , 8F
原來如此,謝謝各位的解答
09/23 03:49, 8F

09/25 03:39, , 9F
走冰...........!!!
09/25 03:39, 9F
文章代碼(AID): #1AjyODro (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1AjyODro (LinuxDev)