linux下可执行文件无法执行问题定位排查

在CentOS 7.4 Minimal环境下,编译的32位可执行文件运行时出现找不到libmqic.so动态库的错误。通过ldd命令发现bin文件依赖的动态库未找到,问题根源在于环境变量LD_LIBRARY_PATH设置不正确。解决方案包括添加软链接、修改ld.so.conf或调整LD_LIBRARY_PATH,推荐使用第三种方式。错误提示显示执行文件与找到的64位libmqic.so不匹配,表明运行时加载了错误的库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:

     最近使用centos7.4 minimal装环境,在编译一个可执行文件后,无法运行改可执行文件。

参考:

https://www.cnblogs.com/wanghetao/p/3779611.html

https://blog.youkuaiyun.com/qq_26819733/article/details/50610129

https://www.cnblogs.com/findumars/p/7128511.html

问题排查

报错信息如下:

xxxxx>test
test: error while loading shared libraries: libmqic.so: wrong ELF class: ELFCLASS64

翻译过来大致意思如下: 加载动态库libmqic.so出错,原因是该库为64位文件。

的确,test是我编译的32bits的可执行文件,使flie可以查看出文件位数

>file test
test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, Bui
### Linux环境下段错误(核心已转储)的原因分析 段错误通常是因为程序试图访问未分配给它的内存区域而引发的一种运行时错误。这种错误可能导致程序崩溃并生成一个名为 `core` 的文件,用于调试目的。以下是可能引起段错误的一些常见原因: - 访问非法地址或空指针解引用[^1]。 - 越界数组访问[^2]。 - 使用未初始化的变量[^3]。 当发生段错误时,操作系统会终止该进程并向磁盘写入 core 文件以便后续分析。然而,在某些情况下,默认设置可能会阻止这些文件被创建或者改变其存储位置。 #### 解决方案概述 为了有效处理此类问题,可以采取以下几个措施来定位和修复潜在的问题源码部分: ##### 关闭Apport服务 在Ubuntu系统上,默认启用了 Apport 错误报告机制,这有时会影响 Core Dump 文件的行为模式。通过命令 `sudo service apport stop` 来禁用它可以帮助恢复正常的核心转储功能行为。 ##### 设置Core Pattern 如果即使停止了Apport之后仍然无法找到任何产生的core文件,则可能是由于当前系统的kernel参数配置不当所致。可以通过检查 `/proc/sys/kernel/core_pattern` 文件的内容确认实际core文件应该存放在哪里以及命名方式如何定义。例如执行如下指令获取相关信息:`cat /proc/sys/kernel/core_pattern` 。此操作有助于了解具体路径设定情况。 另外还可以调整ulimit限制以允许更大尺寸的core dumps 或者启用它们完全生成(如果是默认关闭状态的话),比如利用下面这条shell语句完成相应更改: ```bash ulimit -c unlimited ``` 最后一步就是重新编译你的应用程序,并开启必要的调试选项(-g flag with gcc/g++)从而获得更详尽的信息供GDB之类的工具深入探究根本诱因所在之处。 ### 实际案例中的应用建议 假设有一个简单的C++项目出现了不明缘由下的segmentation fault状况,那么遵循上述指导方针后就可以逐步排查直至最终解决问题为止。记得在整个过程中保持良好的版本控制习惯,每次改动前都做好备份工作以防万一需要回滚到先前稳定的状态去继续探索其他可能性方向。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值