我有相同的代码使用不同的arch选项编译(FMV不起作用,因为函数返回sse,我无法将“默认”更改为sse的东西)如何创建一个在加载时检查cpu功能的元库并加载相应的lib? (没有任何dlsym机械)?
实现所需目标的一种方法是链接虚拟包装器库,该库在启动时检查CPU功能,加载匹配的共享库,然后将所有函数调用转发到此共享库中的实现。
这种虚拟库可以手工实现或通过自定义脚本生成。或者您可以使用Implib.so自动生成它:
$ implib-gen.py --dlopen-callback=load_mylib mylib_avx.so
您需要实现load_mylib
(分析CPUID和dlopen
适当的实现)并将您的应用程序与生成的文件链接。