x86_64架构Fedora34下libsocketcan安装后程序无法加载问题
问题分析与解决方案
为何默认安装到/usr/local/lib而非lib64?
在Fedora 34这类RPM系64位系统中,autotools(./configure)默认会将库安装到prefix目录下的lib子目录,即便检测到x86_64架构,也不会自动切换到lib64路径——这是autotools的默认行为,你编译出的仍然是64位库,只是安装路径不符合系统的64位库搜索习惯。
解决方法
方法1:重新编译安装到标准64位库路径
这是最规范的方案,从根源解决路径问题:
- 回到libsocketcan源码目录,清理之前的编译产物:
make clean
- 重新执行configure,显式指定64位库安装路径:
./configure --libdir=/usr/local/lib64
- 重新编译并安装:
make sudo make install
- 更新系统动态链接库缓存:
sudo ldconfig
方法2:让系统识别/usr/local/lib为64位库搜索路径
如果不想重新编译,可通过修改动态链接库配置实现:
- 创建或编辑
/etc/ld.so.conf.d/local-lib.conf文件,添加以下内容:
/usr/local/lib
- 执行命令更新缓存:
sudo ldconfig
*注:Fedora默认不会自动把/usr/local/lib纳入64位库的搜索范围,通过配置文件添加后,系统会在此路径下查找64位库文件。
方法3:临时指定库路径运行程序
仅用于临时测试场景,启动程序时手动指定库路径:
LD_LIBRARY_PATH=/usr/local/lib ./your-qt-canbus-program
额外排查建议
- 用
file /usr/local/lib/libsocketcan.so确认库文件是64位架构(输出应包含x86_64)。 - 检查Qt SocketCAN插件是否依赖特定版本的libsocketcan,版本不匹配也可能导致加载失败。
内容的提问来源于stack exchange,提问作者TSG
相关产品推荐
相关产品推荐

