/usr/bin/ld 不小心被改爛了 - Linux

By Sandy
at 2008-10-02T11:17
at 2008-10-02T11:17
Table of Contents
shared library 有三個名字
1. real name
2. soname
3. linker name
libcv.so 是 linker name,沒有這個檔案 linker 會找不到你要求的 -lcv
libcv.so.1 應該是 soname,而 libcv.so.1.0.0 是真正 library 所在的檔案。
如果一個執行檔有使用到 shared library 時,它會標示 soname 讓 dynamic
linker/loader 去尋找(詳見 ld.so manpage)。
所以編譯好的程式無法跑是 ld.so 找不到 library(請見 ld.so 的 manpage);
無法編譯則是 /usr/bin/ld 找不到 library(找不到 linker name,搜尋路徑
不正確等等)。
ldconfig 並不會幫你建立 libcv.so,必須在安裝 library 的時候手動建立。
ldconfig 會建立 ld.so.cache 讓 dynamic linker/loader 使用。
※ 引述《Reinhard (偽ABJ)》之銘言:
: 我寫的那支程式沒 autoconfig
: ldconfig 作完了還是找不到 lcv
: 除非把 libcv.so.1 rename 成 libcv.so
: 如果其他板友有其他高見也請指點 @@
: 等下試試看重開會不會有效好了 XD
: ※ 引述《poppyer (破破)》之銘言:
: : 那就有點奇怪了
: : 應該是可以的
: : 它會找到libcv.so.1的, 不用帶-lcv1.0.0
: : 再試試sudo ldconfig讓它更新一下cache
: : 同時你的程序make以前, 重新autoconfig / configure一下
: : 還不行我也沒辦法了
--
Tags:
Linux
All Comments

By Yuri
at 2008-10-04T17:56
at 2008-10-04T17:56
Related Posts
新版的 vmware server 2.0 好難用

By Catherine
at 2008-10-02T10:22
at 2008-10-02T10:22
amsn會當機

By Ursula
at 2008-10-02T02:45
at 2008-10-02T02:45
amsn會當機

By Franklin
at 2008-10-02T01:09
at 2008-10-02T01:09
OpenSUSE 11.0 Language Pack

By Zora
at 2008-10-02T00:17
at 2008-10-02T00:17
Fedora 8 CD 版

By Rae
at 2008-10-01T23:10
at 2008-10-01T23:10