【问题标题】:How to know type of a linker如何知道链接器的类型
【发布时间】:2016-03-02 17:48:52
【问题描述】:

我们如何知道我们的系统正在使用哪种类型的链接器(静态/动态)?

是由我们使用的库类型(静态/动态)决定的,还是有其他任何东西?

【问题讨论】:

    标签: linker language-agnostic


    【解决方案1】:

    您的工具链(例如 GCC + GNU binutils)将提供一个链接器(例如/usr/bin/ld) 用于链接程序(无论是静态的、动态的还是混合的) 两者中的)当您构建它们时。

    您的操作系统将提供一个动态链接器(例如/lib/ld-linux.so) 加载程序所需的共享库(如果有)并解析符号 在运行时,根据编码在 由链接器在构建时执行。

    【讨论】:

    • 谢谢!抱歉,由于声誉较低,无法对您的答案进行投票...再次感谢!
    • @DeadCode To accept the answer 你点击绿色复选标记。
    【解决方案2】:

    您是项目的主人。因此,当您使用编译器链接器选项创建和设置构建配置时,您需要为代码创建宏定义并将其传递给带有其他选项的编译器。使用此宏来识别代码中的库类型。

    编译命令:

    gcc -D LINK_STATIC a.cpp ...
    

    代码:

    #ifdef LINK_STATIC
      ... static implementation ...
    #end
    
    #ifdef LINK_DINAMIC
      ... dinamic implementation ...
    #end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      相关资源
      最近更新 更多