跨链接器链接交叉编译静态库失败问题排查
交叉编译静态库跨主机链接异常问题
操作场景
- 主机A:Ubuntu 16.04容器,使用
arm-xilinx-linux-gnueabi交叉工具链编译生成静态库mylib.a - 主机B:CentOS容器,使用同款
arm-xilinx-linux-gnueabi工具链编译代码后,链接从主机A复制的mylib.a
报错信息
在主机B执行链接操作时出现以下错误:
error adding symbols: Archive has no index; run ranlib to add one collect2: error: ld returned 1 exit status
已做排查
- 确认
mylib.a包含索引头文件 - 尝试将
mylib.a中的.o文件提取到主机B,再用arm-xilinx-linux-gnueabi-ar重新打包,问题仍未解决
疑问
该问题是由于构建主机系统不兼容导致的?还是因为使用arm-xilinx-linux-gnueabi-ar时未指定目标格式(支持格式包括:elf32-littlearm elf32-bigarm elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex)?
补充说明
在主机A或主机B上执行命令/app/tools/xilinx/vivado2016.4/SDK/2016.4/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-nm处理mylib.a时,每个.o文件都返回:
vtss_phy_ts_util.c.o: File format not recognized
内容的提问来源于stack exchange,提问作者user2132190
相关产品推荐
相关产品推荐

