【发布时间】:2012-04-19 18:13:30
【问题描述】:
当我用 ld 链接 libm 等库时,我需要删除 lib 前缀。如果文件不遵循此命名约定怎么办?除了重命名文件之外,还有其他方法可以链接它吗?
【问题讨论】:
标签: linker gnu-toolchain
当我用 ld 链接 libm 等库时,我需要删除 lib 前缀。如果文件不遵循此命名约定怎么办?除了重命名文件之外,还有其他方法可以链接它吗?
【问题讨论】:
标签: linker gnu-toolchain
您可以让链接器搜索一个没有 lib 前缀的库:
gcc main.o -L/path/to/foo -l:foo.a
这在指定库列表并且稍后添加 -l 标志的环境中特别有用(例如,某些 makefile 或 eclipse CDT)
【讨论】:
您可以链接到任何库,例如foo.a,通过在链接行指定完整路径:
gcc main.o /path/to/foo.a
使用非标准库名称会失去链接器搜索它的能力,例如这不起作用:
gcc main.o -L/path/to foo.a
您可以使用-l:foo.a 语法避免缺少搜索:
gcc main.o -L/path/one -L/path/two -l:foo.a
当我用 ld 链接 libm 等库时
请注意,一般情况下,您应该不将任何内容与ld 链接。请改用编译器驱动程序——它将对象和库添加到正确结果所需的链接行。
【讨论】: