Chinaunix

标题: 静态库引用问题 [打印本页]

作者: garyv    时间: 2014-01-26 23:36
标题: 静态库引用问题
现有一个静态库libx.o,该静态库中包含目标文件:
a.o
b.o
c.o
d.o

在一个link script里面要连接libx.a
  1.         .text :
  2.         {
  3.                 boot.o (.text)
  4.                 lib/libx.a (.text)
  5.                 * (.text)
  6.                 * (.rdata)
  7.                 * (.rodata)
  8.                 _etext = .;
  9.         }
复制代码
现在发现arm-linux-ld生成的目标文件比较大,其实只需要使用libx.a里面的b.o模块,有没有办法在link script里面做类似设定:
lib/libx.a(b.o) (.text)
直接这样ld会报错。
作者: lenky0401    时间: 2014-01-27 09:15
可你确定b.o不依赖其他o文件里的符号?
作者: zhaohongjian000    时间: 2014-01-27 09:30
两个方法:
1.干脆把.a解压之后,提取需要的重新做的.a文件。不过需要厘清依赖关系。
2.试试-ffunction-sections和--gc-section,后一个是ld的选项。
作者: garyv    时间: 2014-01-27 14:30
确认,b.o里面不依赖其他模块。
按照3楼的方法2,发现ld最后能生成elf,但是执行:
arm-linux-objcopy -O binary -S output.elf output.bin
执行过程正常,但是输出的bin文件为0字节!!!!!

添加这些参数之前,虽然生成的bin文件比较大,但bin文件正常,执行也是正常的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2