当linux可执行文件缺少或者不兼容so库时候,如何查看版本以及缺少那些库

解决方法:

ldd 命令来验证程序是否加载了正确的库:

如检查linear_elasticity可执行文件缺少的库,用下面命令:

ldd  linear_elasticity

可以发现下面not found就是缺少的库,还有对应的库的位置已经版本 

$ ldd linear_elasticity
	linux-vdso.so.1 (0x00007fff5899b000)
	libdeal_II.so.9.2.0 => /usr/local/lib/libdeal_II.so.9.2.0 (0x00007f3541200000)
	libprecice.so.2 => /usr/lib/x86_64-linux-gnu/libprecice.so.2 (0x00007f3540c00000)
	libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007f3549fca000)
	libgcc_s.so.1 => /usr/lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3549faa000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3540800000)
	libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f3540400000)
	libopenblas.so.0 => /usr/lib/x86_64-linux-gnu/libopenblas.so.0 (0x00007f353dfb0000)
	libz.so.1 => /usr/lib/x86_64-linux-gnu/libz.so.1 (0x00007f3549f8c000)
	libboost_filesystem.so.1.71.0 => not found
	libboost_log.so.1.71.0 => not found
	libboost_log_setup.so.1.71.0 => not found
	libboost_program_options.so.1.71.0 => not found
	libboost_thread.so.1.71.0 => not found

### 解决Linux下PyInstaller打包时缺失的.so动态链接问题 当在Linux环境下使用PyInstaller进行Python应用打包时,可能会遇到`.so`文件丢失的情况。这通常是因为某些依赖项未能被自动识别并包含在最终的可执行文件中。 #### 1. 手动指定隐藏导入 对于那些未被PyInstaller检测到的模块或共享对象(如`.so`文件),可以创建一个.spec文件来手动定义这些隐含依赖关系。通过这种方式,确保所有必要的资源都被正确嵌入到生成的应用程序包内[^3]。 ```python from PyInstaller.utils.hooks import collect_dynamic_libs, collect_submodules hidden_imports = ['module_name'] # 替换为实际需要添加的模块名 binaries = collect_dynamic_libs('package_with_so_files') # 收集特定软件包中的.so文件 a = Analysis( ... hiddenimports=hidden_imports, binaries=binaries, ...) ``` #### 2. 使用环境变量LD_LIBRARY_PATH 另一种方法是在构建过程中设置`LD_LIBRARY_PATH`环境变量指向含有所需`.so`文件的位置。这样可以让PyInstaller找到并复制所需的共享至目标目录。 ```bash export LD_LIBRARY_PATH=/path/to/your/libs:$LD_LIBRARY_PATH pyinstaller your_script.py ``` #### 3. 修改钩子脚本(hook scripts) 如果上述两种方式都不能解决问题,则可能需要编写自定义挂钩脚本来处理特殊情况下的依赖收集逻辑。这类情况较为少见但也确实存在,特别是针对一些非标准安装路径上的第三方扩展[^4]。 #### 4. 更新PyInstaller版本 考虑到不同版本之间可能存在兼容性和功能差异,建议始终使用最新稳定版的PyInstaller来进行项目打包操作。新版本往往修复了旧版本中存在的诸多bug,并增加了更多特性支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱生活的五柒

谢谢你的打赏,人好心善的朋友!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值