Re: [問題] /usr/bin/ld 不小心被改爛了
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一下
: : 還不行我也沒辦法了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.25.228
推
10/02 15:19, , 1F
10/02 15:19, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):