Re: [問題] /usr/bin/ld 不小心被改爛了

看板Linux作者 (mecs)時間17年前 (2008/10/02 11:17), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串6/6 (看更多)
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
感謝教學,/usr/lib底下很多link name和soname都是符號連結
10/02 15:19, 1F
文章代碼(AID): #18v3r3x_ (Linux)
討論串 (同標題文章)
文章代碼(AID): #18v3r3x_ (Linux)