当我将 libm 等库与 ld 链接时,我需要删除 lib 前缀。如果文件不遵循此命名约定怎么办?除了重命名文件之外,还有其他方法可以链接它吗?
问问题
13245 次
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 回答