※ 引述《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是坏的,哪个好心人帮我修一下 囧