Chinaunix
标题:
静态库引用问题
[打印本页]
作者:
garyv
时间:
2014-01-26 23:36
标题:
静态库引用问题
现有一个静态库libx.o,该静态库中包含目标文件:
a.o
b.o
c.o
d.o
在一个link script里面要连接libx.a
.text :
{
boot.o (.text)
lib/libx.a (.text)
* (.text)
* (.rdata)
* (.rodata)
_etext = .;
}
复制代码
现在发现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