前端之家收集整理的这篇文章主要介绍了
c – linux dlopen:如何加载lib管理器,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有相同的代码编译与不同的arch选项(FMV不起作用,因为函数返回sse,我不能将“默认”更改为sse的东西)
如何创建一个元库,在加载时检查cpu功能并加载相应的lib? (没有任何dlsym机械)?
最佳答案
实现所需目标的一种
方法是
链接虚拟包装器库,该库在启动时检查
cpu功能,加载匹配的共享库,然后将所有
函数调用转发到此共享库中的实现.
这种虚拟库可以手工实现或通过自定义脚本生成.或者您可以使用Implib.so自动生成它:
$implib-gen.py --dlopen-callback=load_mylib mylib_avx.so
您需要实现load_mylib(分析cpuID并执行相应的实现)并将您的应用程序与生成的文件链接起来.
原文链接:https://www.f2er.com/linux/439832.html