gpt4 book ai didi

c++ - 使用 gcc 从静态链接文件中查找可选符号?

转载 作者:行者123 更新时间:2023-11-30 03:20:05 25 4
gpt4 key购买 nike

我想支持一些加速的 AVX/SSE 功能,但我希望能够有选择地包含它。我可以将 dlsym() 与共享对象一起使用,但为了更便携的二进制文件,我尽可能避免共享链接。

是否有一种机制可用于在成功链接时使用静态符号,否则退回到通用函数?

最佳答案

可以使用弱符号,标记为__attribute__ ((weak)),声明如下:

void avx_function (void) __attribute__ ((weak));

然后在调用函数之前检查 NULL:

if (avx_function != NULL)
avx_function ();
else
fallback_implementation ();

但这对于替代实现并不真正有效,仅适用于通过其他方式链接的可选功能:您需要一种机制来实际引入 avx_function 因为弱符号不会那样做.

但是编译时或链接时功能选择不会让您可移植的二进制文件。如果您需要可移植的二进制文件,您最好通过函数指针进行运行时检查和间接访问(用于复杂的功能选择)。

关于c++ - 使用 gcc 从静态链接文件中查找可选符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com