主题 : 关于友善交叉编译器的疑问 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 21258
精华: 1
发帖: 120
金钱: 655 两
威望: 131 点
综合积分: 260 分
注册时间: 2010-05-13
最后登录: 2023-11-17
楼主  发表于: 2015-11-16 09:41

 关于友善交叉编译器的疑问

友善 tiny210在它的用户手册中说道 用的交叉工具 是arm-linux-gcc-4.5.1-v6-vfp-xxxx.tgz 和 6410是同一个,它的文档中写着 “在比编译内核时会自动采用armv7指令集,支持硬浮点运算。"
那它 如何碰到v6的就用v6指令集,v7就用v7指令集呢?  还有它弄v7的时候是用armel还是armhf呢?

友善 在tiny210的页面(http://112.124.9.243/?page_id=116)还写着  "支持友善之臂Linux程序平滑移植: 因为此版本的Debian所用的交叉编译器和C库版本,和友善之臂所选刚好完全相同“
但是这个debian本来是跑在6410上(armv6指令),能跑在210(armv7指令),那是不是 210没有用 armv7指令集啊,否则应该跑不起来才对啊。这和用户手册中说的有矛盾啊!!
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2015-11-17 11:22
1) 编译内核时,不管你是用什么版本的交叉编译器,都会根据你的内核配置来确定合适的编译选择,具体可以查看 arch/arm/Makefile
2) 在 arch/arm/Makefile 你可以看到 -msoft-float,因此内核其实并不关心 armel 还是 armhf
3) 如果能跑在 6410 上,那就说明没有用到 armv7指令,否则会出现ARM指令异常,比如你使用 4.5.1 这个编译器编译的程序放到 2440/2451的板上运行,可能就会遇到指令异常
4) 你可以使用 arm-linux-readelf -A <file> 来查看其体系结构的信息
级别: 侠客
UID: 21258
精华: 1
发帖: 120
金钱: 655 两
威望: 131 点
综合积分: 260 分
注册时间: 2010-05-13
最后登录: 2023-11-17
2楼  发表于: 2015-11-17 16:51

 回 1楼(911gt3) 的帖子

非常感谢。对2有点疑问,看了内核代码确实 都是 -msoft-float,也就是armel了,但是现在像ubuntu arm一类的rootfs会用armhf,这样内核用armel,rootfs用armhf,为什么没出问题呢?