Re: [問題] ARM execution No such file or dictio …

看板LinuxDev作者 (mecs)時間15年前 (2009/08/01 12:20), 編輯推噓2(205)
留言7則, 2人參與, 最新討論串6/6 (看更多)
※ 引述《septemhill (冰淇淋乾杯)》之銘言: : ※ : : 看起來像是 program interpreter (也就是 dynamic loader) 的問題。 : : 用 readelf -l <executable> 看一下 program interpreter 是指到哪。 : : 也許你的版子上 dynamic loader 的路徑跟執行檔裡面寫的不一樣,在這種 : : 情況之下 kernel 會找不到 dynamic loader ,所以如果你的執行檔需要用到 : : shared library,就會有問題。 : : 以 gcc 為例,你可以用 -Wl,--dynamic-linker=<path_to_dynamic_loader> : : 改變內定值,ex: : : gcc -Wl,--dynamic-linker=/lib/ld-lsb.so.1 -o test test.c : 敝人按照您給的提示,利用arm-linux-readelf -l hello查看了一下 : 後來發現他指向我host /lib中的某個dynamic library : 我之前也有事先查過hello所需的動態lib,所以一併先拉到同一資料夾下 : 但是我發現他需要兩個動態lib的部份:libc.so.0、ld-uClibc.so.0 : 於是利用您教的指令,我做了重新指向 : arm-linux-gcc -Wl,--dynamic-linker=libc.so.0 -o hello hello.c : 不過照這樣的指令只能動作一個libc.so.0,另一個就沒有連進去 : 執行時就會造成錯誤訊息Sementation fault : 我也試過用如下的指令 : arm-linux-gcc -Wl,--dynamic-linker=libc.so.0,ld-uClib.so.0 -o hello hello.c gcc 沒有給錯誤尋息? : 不過依舊還是Segmentation fault : 所以想請教一下,現在我還差在哪些地方有問題呢? : 還請再指點,謝謝 dynamic linker/loader (可參考 ld.so 的 man page) 跟一般的 shared library 角色不太一樣,libc.so.0 是屬於「一般」的 shared library。ld-uClib.so.0 看起來 像是 dynamic linker/loader, 需要給絕對路徑。當 kernel 在執行一個 ELF 的時 後會尋找這個檔案(如果 ELF 有記載 program interpreter),如果找不到,就會出現 No such file or directory 。 首先要確認你的 dynamic linker 載那,如果真的是 ld-uClib.so.0, 看一下你的 ld-uClib.so.0 放在什麼地方,如果是在 /lib 那你可以試試: arm-linux-gcc -Wl,--dynamic-linker=/lib/ld-uClib.so.0 -o hello hello.c 如果 /lib/ld-uClib.so.0 不存在,那你可以查看一下其他可以執行的檔案他們 用的 linker 的路徑是甚麼。 ※ 編輯: mecs 來自: 66.176.233.163 (08/01 12:32)

08/04 18:49, , 1F
真是抱歉,今天問了該公司,他們說是板子的問題
08/04 18:49, 1F

08/04 18:49, , 2F
所以沒辦法port library上去,真是麻煩您不少時間
08/04 18:49, 2F

08/05 09:48, , 3F
你不需要 port 任何 library 上去
08/05 09:48, 3F

08/05 09:49, , 4F
除非整個版子上的執行檔都是靜態連結的,不然一定有一個
08/05 09:49, 4F

08/05 09:51, , 5F
dynamic loader/linker. 只要找到這個 linker 在版子上的路徑
08/05 09:51, 5F

08/05 09:52, , 6F
便可以使用 -Wl,--dynamic-linker=
08/05 09:52, 6F

08/05 21:31, , 7F
整個板子上的執行檔確實都是static,這點我確認過了
08/05 21:31, 7F
文章代碼(AID): #1ASyALFD (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1ASyALFD (LinuxDev)