Re: [問題] 正確安裝Library給cross compiler的方式

作者: DEATHX (幽光)   2014-04-04 21:38:19
※ 引述《fishlinghu (令狐瑜)》之銘言:
: 我最近在開發Zedboard這塊板子
: 所以有用到cross compiler
: 我是用現成的arm-linux-gnueabi-g++
: 可是最近幾天遇到許多問題
: 就是我不知道該怎麼樣才有辦法把library或相關package
: 安裝好給cross compiler使用
: 我遇到的第一個問題是安裝LibSerial這個library的時候
: 我用apt-get把可以抓的相關套件都裝好了
: 可是不管怎樣我下-lserial的指令的時候cross compiler就是reference不到
: 我照這篇
: http://stackoverflow.com/questions/2272200/undefined-referance-to-libserial
: 下去/usr/lib裡面看該有的檔案明明都有
: 後來我想到這篇可能只適用於一般g++
: 我就把那個library的相關檔案也都丟進/usr/arm-linux-gnueabi/lib下面
: 然後就變成skipping incompatible......cannot find......
: 我認為是library安裝錯誤的問題
: 不知道有沒有人可以告訴我該怎麼正確安裝library
: 或是提供我一個你認為不錯的網站
: 然後另一個問題是
: 我在make uboot的時候遇到沒有dtc的問題
: 我就去抓了dtc壓縮檔
: 解壓之後make + make install(裡面沒有configure檔)
: 可是我打dtc -v terminal還是顯示根本沒有這個套件
: 另外這個套件應該也是要讓我的cross compiler找得到才對
: 以上
: 希望有人可以為我解答
: 或是提供我一個你認為可以參考的網站
: 非常非常感謝你
: 我現在搞不太清楚linux的套件跟library都是怎麼裝還有裝在哪裡
: 還有當我下指令的時候linux是去哪裡找套件
: compiler的時候compiler是怎麼reference到library(我看到超多叫作lib的資料夾)
: 以及該怎麼樣g++/arm-linux-gnueabi-g++才會看得到我要給他們用的東西
: BTW我是用Ubuntu12.04.4 LTS
在ubuntu 12.04/debian 7之前,我會推薦用scratchbox2。
但自從debian系列支持multiarch之後,scratchbox2就壞掉了。
稍微介紹一下scratchbox2原理(假設host是x86, target是armel,就是沒有hard float):
在x86 host上面要編譯arm的binary file,如果只有用到standard C library的話,
cross compiler就可以了。但是當要用到別的library例如qt,gtk, 或是xlib.
你就必須要讓cross compiler知道要去哪裡找到armel版本的library在哪,所以你光是灌
x86版本的lib是不行的,必須灌armel版本的lib. 在現在的multiarch架構下是辦得到的
但是這樣會搞得host端library版本很混亂。
scratchbox2則是需要使用者準備一個arm的rootfs,然後用sb2-init指令建立連結。
以後用sb2 編譯命令(sb2 gcc, sb2 make)時,就會自動到那個rootfs找需要的library.
如果rootfs裡面沒有需要的lib, 則chroot進去,用apt-get裝起來就好了。
只是scratchbox2似乎很久沒有維護了,現在我正在修,不過功力不夠......
(我大部分的時間都在上成人網站,而且coding很爛)
https://github.com/h113331pp/scratchbox2
git下來之後, 記得change branch到2.3_development。
目前sb2 wrapper中的ldd跟dpkg-checkbuilddeps是壞的,哪個好心人幫我修一下 囧
作者: Rhinocero (愛火快滅了)   2014-04-04 22:39:00
推強者

Links booklink

Contact Us: admin [ a t ] ucptt.com