如何知道链接器的类型

How to know type of a linker

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

是我们用过的库类型(static/dynamic)决定的还是有其他的?

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

编译命令:

gcc -D LINK_STATIC a.cpp ...

代码:

#ifdef LINK_STATIC
  ... static implementation ...
#end

#ifdef LINK_DINAMIC
  ... dinamic implementation ...
#end

您的工具链(例如 GCC + GNU binutils)将提供 linker(例如 /usr/bin/ld) 您用于 link 程序(无论是静态、动态还是混合 两者)当你建设他们。

您的操作系统将提供动态linker(例如/lib/ld-linux.so) 加载程序所需的共享库(如果有)并解析符号 引用在运行时,根据在 由 linker 构建时间 .

执行