You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新编译的Ubuntu可执行文件报Invalid argument错误退出码126如何解决

排查方向

  • 跟踪系统调用定位错误触发点
    执行 strace ./Build/soda,查看所有系统调用的返回值,定位哪个调用返回了EINVAL(对应"Invalid argument"报错),可直接定位是内核加载ELF阶段、动态链接阶段还是库初始化阶段出错。
  • 查看动态链接加载详细日志
    执行 LD_DEBUG=all ./Build/soda 2>&1 | head -200,输出动态链接器的完整加载流程日志,检查是否是某个依赖库的初始化、符号解析步骤出错。
  • 验证ELF解释器可用性
    虽然file命令识别到解释器为/lib64/ld-linux-x86-64.so.2,仍需执行 ls -l /lib64/ld-linux-x86-64.so.2 确认该文件存在且软链接指向正确,没有损坏或架构不匹配问题。
  • 检查挂载分区执行权限
    若Build目录位于单独挂载的分区,执行 mount 查看对应分区的挂载参数,确认没有noexec标记(该标记会禁止分区内所有文件执行,哪怕文件本身有可执行权限)。
  • 排除工具链链接规则问题
    你当前用gcc编译混合C/C代码并手动链接libstdc,可尝试将编译命令替换为g++,去掉-lstdc++参数重新编译,避免gcc处理C++全局构造、runtime初始化时的异常。
  • 最小示例复现排查
    写一个仅包含空main函数的测试程序,使用完全相同的编译参数链接SDL2库,运行测试是否报错:
    #include <SDL2/SDL.h>
    int main() {
        return 0;
    }
    
    若测试程序同样报错,说明是本地SDL2安装、工具链或系统环境问题;若测试程序正常运行,则说明是原项目的全局对象构造、库构造函数逻辑存在问题。
  • 检查ELF文件完整性
    执行 readelf -h Build/soda 检查ELF头字段是否合法,执行 size Build/soda 查看程序段大小是否存在异常过大的情况。

内容的提问来源于stack exchange,提问作者Joe Strout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:06:03