作者WalkingIce ( 殺手哥吉拉 13)
看板LinuxDev
標題Re: [問題] -l 和 -L 之用法
時間Tue Sep 22 02:29:30 2009
※ 引述《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
推 godman362:那假設我輸入:gcc -o png png.c -lpng 09/22 10:10
→ godman362:這樣的話,他是否直接去找系統預設,而非我自己編譯的 09/22 10:11
推 phterry:gcc -o png png.c -lpng (不管有沒有加-L) 是dynamic link 09/22 13:09
→ phterry:也就是說,gcc會去找libpng.so,而不是libpng.a 09/22 13:10
→ phterry:此文最後一行 gcc -o png png.c /path/to/your/libpng.a為 09/22 13:12
→ phterry:正解 09/22 13:12
推 zwai:-l是dynamic link,*.a是static link用的lib~~ 09/22 23:07
推 godman362:原來如此,謝謝各位的解答 09/23 03:49
推 aguai:走冰...........!!! 09/25 03:39