【问题标题】:How do I link a library file in GCC that does not start with lib?如何在 GCC 中链接不以 lib 开头的库文件?
【发布时间】:2012-04-19 18:13:30
【问题描述】:

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

【问题讨论】:

    标签: linker gnu-toolchain


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,我明白了,我没抓住里面的 "-l"
    【解决方案2】:

    您可以链接到任何库,例如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 链接。请改用编译器驱动程序——它将对象和库添加到正确结果所需的链接行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 2018-08-23
      • 1970-01-01
      相关资源
      最近更新 更多