#1 2012-08-23 22:05:08
交叉編譯鏈設定求助
交叉編譯鏈應該怎樣設定呢?
想自己編譯一個新版的PHP,搞了很多天都失敗了,編譯出來都是依賴庫的問題導致運行不了.
一開始不知道注意編譯路徑問題,導致很多庫文件加載不了.
然後試著把依賴庫都安裝到ubuntu的/opt目錄下,大部分的依賴庫都能正常加載了.但是最後3行的依賴庫都是工具鏈裡面的,改不了啊...想讓它加載別的庫還不行,實在想不到辦法了,只好到這裡求教了.
root@unknown:/# ldd php
libcrypt.so.0 => /opt/lib/libcrypt.so.0 (0x2aabf000)
libexpat.so.1 => /opt/lib/libexpat.so.1 (0x2aae3000)
libbz2.so.1.0 => /opt/lib/libbz2.so.1.0 (0x2ab19000)
libm.so.0 => /opt/lib/libm.so.0 (0x2ab39000)
libxml2.so.2 => /opt/lib/libxml2.so.2 (0x2ab55000)
libdl.so.0 => /opt/lib/libdl.so.0 (0x2aca3000)
libz.so.1 => /opt/lib/libz.so.1 (0x2acb6000)
libiconv.so.2 => /opt/lib/libiconv.so.2 (0x2acda000)
libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x2adbb000)
libc.so.0 => /opt/lib/libc.so.0 (0x2addc000)
libc.so.0 => /lib/libc.so.0 (0x2ae8e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2af02000)
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
離線
#5 2012-08-24 22:23:17
Re: 交叉編譯鏈設定求助
我可以到哪裡獲得optware的toolchain呢?我找到這個地址http://www.nslu2-linux.org/wiki/FAQ/OptwareWl500gBuild,但是下載的連結已經404錯誤了.
留意到Entware這個項目,如果我用這個項目的這個toolchain(https://code.google.com/p/wl500g/wiki/C … omFirmware)編譯程序,還會出現類似問題嗎?
離線
#6 2012-08-25 16:41:28
Re: 交叉編譯鏈設定求助
1. Optware Toolchain, 參考ardayang兄寫的這篇.
2. Cross Toolchain, 依照您要運行的第三方韌體, 參考官方文件取得.
3. Entware應該是用Lly Cross Toolchain, 編譯OpenWrt套件. 還沒試過.
您的疑問應不是選用哪套Cross Toolchain來解決. 要運行的第三方韌體所提供的Cross Toolchain就是標準. 如果沒提供, 當然就得設法自行營造.
出現錯誤, 未必是Cross Toolchain的問題, 有時連核心版本都有關係.
應用程式多用於x86. 轉換平台, 能編譯運作成功是福氣, 失敗也很正常. 故有諸多patch因此而生.
查了一下,
1. Entware 002-uclibc-ldconfig-opt.patch
2. Tomato交叉編譯器內, tools/brcm/K26/hndtools-mipsel-uclibc-4.2.4/target-utils/ldconfig
請自行測試看看.
最後修改: hippo (2012-08-25 23:30:09)
離線
#7 2012-08-26 09:50:11
Re: 交叉編譯鏈設定求助
hippo 提到:
1. Optware Toolchain, 參考ardayang兄寫的這篇.
2. Cross Toolchain, 依照您要運行的第三方韌體, 參考官方文件取得.
3. Entware應該是用Lly Cross Toolchain, 編譯OpenWrt套件. 還沒試過.
您的疑問應不是選用哪套Cross Toolchain來解決. 要運行的第三方韌體所提供的Cross Toolchain就是標準. 如果沒提供, 當然就得設法自行營造.
出現錯誤, 未必是Cross Toolchain的問題, 有時連核心版本都有關係.
應用程式多用於x86. 轉換平台, 能編譯運作成功是福氣, 失敗也很正常. 故有諸多patch因此而生.
查了一下,
1. Entware 002-uclibc-ldconfig-opt.patch
2. Tomato交叉編譯器內, tools/brcm/K26/hndtools-mipsel-uclibc-4.2.4/target-utils/ldconfig
請自行測試看看.
意思就是說,先打上這個patch,然後再編譯toolchain應該就可以了?
我原本還以為要用toolchain重新編譯一次uclibc,放到/opt下呢...
等我有空試試,php中用到的yaf.so自己也成功編譯了,現在entware基本上已經滿足我需求啦.2個星期沒睡過好覺了,暫時就不折騰了.
離線