我记得找到* .a库,它不包含任何对象,而是列表库(作为纯文本?),类似于:-liconv -lm
因此,当gcc遇到它时,将搜索两个库以进行链接。
有这样的伎俩吗?很确定它在那段时间工作,但我现在还不知道如何制作它。
答案 0 :(得分:0)
您的链接器来自binutils吗? binutils ld
支持implicit linker scripts的.a
个文件:
如果指定链接器无法识别为目标文件或存档文件的链接器输入文件,它将尝试将该文件作为链接描述文件读取。如果无法将文件解析为链接描述文件,则链接器将报告错误。
链接描述文件不必复杂,它可以像这样简单(对于glibc' s libc.so
):
/* GNU ld script. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( …/libc.so.6 …/libc_nonshared.a AS_NEEDED ( …/ld-linux-x86-64.so.2 ) )
或者你可以use INPUT
to delegate things to ld
:
如果您使用“
INPUT (-lfile)
”,则ld会将名称转换为libfile.a
,与命令行参数“-l
”一样。