clFFT程序运行报undefined symbol: clfftInitSetupData错误求助
问题根因
你的怀疑是正确的,程序运行时加载的clFFT库版本和编译时链接的版本不一致:
- 编译阶段:你通过
-L/usr/local/lib64 -lclFFT指定链接的是/usr/local/lib64/libclFFT.so,该库已确认存在clfftInitSetupData符号 - 运行阶段:动态链接器优先加载了系统默认路径下的
/lib/x86_64-linux-gnu/libclFFT.so.2,这个版本的库不存在clfftInitSetupData符号,因此触发报错。
验证方法
执行以下命令确认系统自带clFFT库是否缺失对应符号:
nm -D /lib/x86_64-linux-gnu/libclFFT.so.2 | grep clfftInitSetupData
如果输出为空即可确认上述判断。
修复方案
- 方案一(永久生效):在编译参数中添加运行时库搜索路径(RPATH),修改Makefile中的
LFLAGS配置:
重新编译后,程序运行时会优先从LFLAGS = -Wl,-O3 -Wl,-rpath=/usr/local/lib64/usr/local/lib64路径加载clFFT库。 - 方案二(临时测试):运行程序前手动指定库搜索路径:
LD_LIBRARY_PATH=/usr/local/lib64 ./main_exe - 方案三:卸载系统自带的clFFT库,避免版本冲突,以Debian/Ubuntu系为例:
卸载后动态链接器会自动找到你编译安装在sudo apt remove libclfft2/usr/local/lib64下的clFFT库。
内容的提问来源于stack exchange,提问作者user1773603
相关产品推荐
相关产品推荐

