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-linuxprefix=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]
查看完整版本: 求助:交叉编译