linux dlopen:如何加载lib管理器

问题描述 投票:5回答:1

我有相同的代码使用不同的arch选项编译(FMV不起作用,因为函数返回sse,我无法将“默认”更改为sse的东西)如何创建一个在加载时检查cpu功能的元库并加载相应的lib? (没有任何dlsym机械)?

c++ linux dlopen
1个回答
3
投票

实现所需目标的一种方法是链接虚拟包装器库,该库在启动时检查CPU功能,加载匹配的共享库,然后将所有函数调用转发到此共享库中的实现。

这种虚拟库可以手工实现或通过自定义脚本生成。或者您可以使用Implib.so自动生成它:

$ implib-gen.py --dlopen-callback=load_mylib mylib_avx.so

您需要实现load_mylib(分析CPUID和dlopen适当的实现)并将您的应用程序与生成的文件链接。

© www.soinside.com 2019 - 2024. All rights reserved.