主题 : 请教:illegal instruction  的问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 11538
精华: 0
发帖: 38
金钱: 240 两
威望: 78 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-10
最后登录: 2018-02-08
楼主  发表于: 2010-01-07 21:15

 请教:illegal instruction  的问题

在友善的板子上移植dropbear

当我在板子上运行dropbearkey -t rsa -f dropbear_rsa_host_key生成key时,终端上打出illegal instruction的错误。编译器用的是友善的arm-none-linux-gnueabi-。看到论坛说编译的时候要加上-march=armv4t,这依然会报illegal instruction的错误,大家有没有遇到过同样的问题,这个问题怎么解释呢?
[ 此帖被kasim在2010-01-10 10:15重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-01-07 22:06

 Re:请教:illegal instruction 的问题

我用openembedded来编译dropbear,在mini2440上运行没有问题. 附件里是configure和compile的log,你可以参考。
至于你的情况,看起来应该是dropbearkey执行档本身或者它动态链接的库文件里包含非armv4t指令集的指令造成。你编译时必须确保dropbear和它所依赖的库都是用armv4指令集编译的。
附件: build_log_dropbear.zip (14 K) 下载次数:17
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 11538
精华: 0
发帖: 38
金钱: 240 两
威望: 78 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-10
最后登录: 2018-02-08
2楼  发表于: 2010-01-07 22:27

 回 1楼(kasim) 的帖子

谢谢楼主,我的根文件系统用的是友善的,我想他们的库应该是用armv4t的指令集编译出来的,我在编译dropbear的时候修改了他的makefile,CFLAGS中加了-march=armv4t这项,这样对做,对吗?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2010-01-07 22:33

 Re:请教:illegal instruction 的问题

这样做是对的,不过你最好再看一眼编译时候的输出,确保每一个.o编译的时候gcc的命令行上都有-march=armv4t
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2010-01-07 22:39

 Re:请教:illegal instruction 的问题

你也可以试试用"arm-linux-gcc"代替"arm-none-linux-gnueabi-gcc"(先执行export PATH=/usr/local/arm/4.3.2/bin:$PATH), 对友善之臂提供的4.3.2版本的工具链来说,arm-linux-gcc其实是一个脚本,内容就是"exec arm-none-linux-gnueabi-gcc -march=armv4t $*"
参考http://www.aiothome.net/read.php?tid=2986&page=3#9896
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 11538
精华: 0
发帖: 38
金钱: 240 两
威望: 78 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2009-12-10
最后登录: 2018-02-08
5楼  发表于: 2010-01-09 23:49

 Re:请教:illegal instruction 的问题

感谢版主,问题果然是这样的。这位哥儿提出关于busybox的问题,我之前也遇到过,之前也遇到用友善做的根文件系统能用,自己用友善的编译器做出来的根文件系统就不能用,系统启动到最后老是抱kill init这个超恶心的错误。呵呵,现在终于找到解决办法了,大长了见识,感谢版主热情的帮助!!!!