13

当我将 libm 等库与 ld 链接时,我需要删除 lib 前缀。如果文件不遵循此命名约定怎么办?除了重命名文件之外,还有其他方法可以链接它吗?

4

2 回答 2

23

可以让链接器搜索一个没有 lib 前缀的库:

gcc main.o -L/path/to/foo -l:foo.a

这在指定库列表并且稍后添加 -l 标志的环境中特别有用(例如,某些 makefile 或 eclipse CDT)

于 2014-09-18T13:00:00.913 回答
14

您可以链接到任何库,例如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

当我将 libm 等库与 ld 链接时

请注意,通常您不应任何内容与ld. 请改用编译器驱动程序——它将对象和库添加到正确结果所需的链接行。

于 2012-04-21T14:33:02.157 回答