我们怎么知道我们的系统使用哪种类型的链接器(静态/动态)?
是否决定了我们使用过的库类型(静态/动态)还是还有其他东西?
答案 0 :(得分:0)
您是项目的主人。因此,当您使用编译器 - 链接器选项创建和设置构建配置时,您需要为代码创建宏定义并将其传递给具有其他选项的编译器。使用此宏来识别代码中的库类型。
编译器命令:
gcc -D LINK_STATIC a.cpp ...
代码:
#ifdef LINK_STATIC
... static implementation ...
#end
#ifdef LINK_DINAMIC
... dinamic implementation ...
#end
答案 1 :(得分:0)
您的工具链(例如GCC + GNU binutils)将提供链接器(例如/usr/bin/ld)
用于链接程序(无论是静态,动态还是混合)
当你构建它们时。
您的操作系统将提供动态链接器(例如/lib/ld-linux.so) 加载程序所需的共享库(如果有)并解析符号 引用在运行时,根据编码的信息 可由链接器在构建时执行。