qemu模擬mips架構的ubuntu系統後,,生成的可執行文件放到宿主機上執行報錯 /lib/ld-linux.so.3: No such file or directory

下面是我網上搜到的相關文章,解決了我的困惑:

今天在Ubuntu9.04下搭建了一下Scratchbox交叉編譯環境,並在新建的ARM模擬器上對Scratchbox自帶的hello-world程序進行編譯,運行時出現題目所示錯誤。

    網上查了一下,ld-linux.so.3大概是linux下進行動態庫連接的連接器,用於新一代elf格式的可執行文件。因此,推測自己搭建的目標平臺下缺少該庫,於是到一下網址:http://www.scratchbox.org/download/files/sbox-releases/stable/tarball/下載軟件包:scratchbox-toolchain-cs2005q3.2-glibc-arm-1.0.5-i386.tar.gz, 解壓該軟件包,在路徑scratchbox/compliers/cs2005q3.2-glibc-arm/arm-none-linux-gnueabi/lib下找到文件ld-linux.so.3,但該文件只是個符號連接,連接到同一路徑下的ld-2.3.6.so,於是將ld-2.3.6.so拷貝到自己在Scratchbox下所建立的模擬器目錄下的lib文件夾下,並利用命令:

ln -s ld-2.3.6.so ld-linux.so.3建立ld-linux.so.3的符號連接。

    OK,重新運行剛纔編譯的程序,問題解決。

    這裏有個問題值得注意:題目中所給錯誤的根目錄“/”,並不是我所在的Ubuntu的根目錄,而是Scratchbox環境虛擬出來的根目錄,這個根目錄下的lib目錄通過兩次符號連接最終指向開發人員安裝的設備目錄下的lib文件。

  網上針對上述問題,還有一種規避性的做法:將程序由動態連接編譯,通過static編譯選項,改爲靜態連接編譯,這樣就不會發生對動態連接器ld-linux.so.3的調用,錯誤也就不會出現。

還有一篇,跟我的報錯比較像,但是不太一樣,也貼出來: 

qemu仿真可執行二進制文件時出現錯誤:/lib/ld-uClibc.so.0: No such file or directory的解決方法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章