WSL环境编译ELF二进制文件执行报错:Exec format error求助
解决WSL中编译的ELF二进制无法执行的问题
优先排查路径匹配问题
从错误提示bash: /bin/ioc_broker: cannot execute binary file: Exec format error能看出,你执行的是系统/bin目录下的同名文件,而非当前~/runtime/bin目录里你刚编译的版本。直接输入命令名时,系统会按PATH环境变量的顺序查找可执行文件,/bin的优先级高于当前目录,所以才会调用到错误的文件。
解决方式:运行当前目录下的二进制文件必须加上./前缀:
./ioc_broker &
其他排查方向
如果上述方法无效,依次检查以下内容:
验证可执行权限:确认编译后的文件拥有执行权限,执行命令查看:
ls -l ioc_broker若输出中无
x标识(例如权限为rw-r--r--),执行以下命令添加权限:chmod +x ioc_broker确认WSL架构匹配:尽管
uname显示为x86_64,仍可通过以下命令验证系统架构:dpkg --print-architecture正常输出应为
amd64,若为其他架构(如arm64),说明你的WSL发行版是arm版本,与编译的x86_64二进制不兼容,需要更换为x86_64版本的WSL发行版。检查动态链接器:你的二进制文件指定的动态链接器为
/lib64/ld-linux-x86-64.so.2,确认系统中存在该文件:ls /lib64/ld-linux-x86-64.so.2若不存在,执行以下命令安装依赖包:
sudo apt update && sudo apt install libc6重新编译排除缓存问题:删除现有build目录,从头执行编译流程,排除编译缓存引发的异常:
cd /mnt/d/src/myproject rm -rf build mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/home/kshitij/runtime .. make && make install
内容的提问来源于stack exchange,提问作者Kshitij_9192
相关产品推荐
相关产品推荐

