打印
[嵌入式Linux]

求助:交叉编译

[复制链接]
436|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
blindambition|  楼主 | 2020-4-25 18:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目的:在虚拟机中编译arm运行库

目标设备:CPU采用ARM-32架构,操作系统是ubuntu,环境运行库是Arm-gnublf-2014年的。

基于INTER_PC机的inter-32虚拟机环境:
交叉编译工具链:arm-gnublf-2019

1:虚拟机中下载zeroZMQ,使用arm工具链编译。
./configure  --host=arm-linux  --target=arm-linux  prefix=opt/arm-zero
配置成功。继续make&&make install编译成功,
形成libzmq.so。

2.写测试代码:
Service.cpp
#include <stdio.h>
#include <stdlib.h>
It main()

rerurn 0;
}
编译链接:
arm-gcc -c service.cpp -I/opt/arm-zero/include  -Wl,rpath /opt/depend  -L /optarm-zero/lib  -lzeromq  -oservice

编译成功,将编译的sevice和依赖库放到目标机的opt/depend下,运行直接出现段错误。于是又做了下面试验:
重编译sevice,即将新编译的libzero.so拿掉,不去链接它
arm-gcc -c service.cpp -I/opt/arm-zero/include  -Wl,rpath /opt/depend  -o service
将新编译service放到目标机上正常运行。

由此可见,我怀疑是程序在启动时加载libzero.so出错了。没有思路了,请各位前辈坛友支招啊。

疑点:
1:因为加载阶段是在main入口前完成的,会是armld.so在目标机和编译机小版本不同吗?如果是这样没有链接libzero.so的程序能正常运行。
2:需要在编译机上回退到arm-gcc2014年版本重新编译吗?
3:主要这个这个没思路,进行不下去了。

求救!

使用特权

评论回复

相关帖子

沙发
blindambition|  楼主 | 2020-4-27 16:49 | 只看该作者
问题已解决,查了一圈故障,最后解决方案。开发版和虚拟机都使用2014arm,问题解决,能通过官网提供的测试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝