当我使用ld链接libm等库时,我需要删除lib前缀。如果文件不遵循此命名约定怎么办?除了重命名文件之外,有没有办法链接它?
答案 0 :(得分:18)
您可以让链接器搜索名为不带lib前缀的库:
gcc main.o -L/path/to/foo -l:foo.a
这在指定了库列表并且稍后会预先添加-l标志的环境中尤其有用(例如,一些makefile或eclipse CDT)
答案 1 :(得分:11)
您可以链接任何库,例如foo.a
,通过在链接行指定它的完整路径:
gcc main.o /path/to/foo.a
使用非标准库名丢失的是链接器搜索它的能力,例如:这不起作用:
gcc main.o -L/path/to foo.a
当我将libm等库与ld
链接时
请注意,一般情况下,不会将任何内容与ld
相关联。改为使用编译器驱动程序 - 它将对象和库添加到正确结果所需的链接行。