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

本地编译的C++程序在生产环境执行报错:Exec format error

问题分析与解决

问题原因

这个错误的核心是二进制架构不兼容:你在x86_64架构机器上编译出的是x86_64指令集的可执行文件,而aarch64(ARM64)架构的CPU无法识别x86_64的指令,所以执行时会提示格式错误。

解决办法

1. 直接在aarch64环境编译

把源码传到aarch64生产机器上,先安装好编译依赖(g++、TgBot库、boost、openssl、pthread等),然后执行原编译命令重新编译:

g++ -c main.cxx -o test_bot --std=c++17 -I/usr/local/include -lTgBot -lboost_system -lssl -lcrypto -lpthread

如果生产环境禁止安装编译工具,可以找一台同架构的编译机编译后再部署。

2. 交叉编译(在x86_64机器上编译aarch64版本)

在x86_64机器上安装aarch64交叉编译工具链(比如aarch64-linux-gnu-g++),然后修改编译命令,指定对应架构的头文件和库路径:

aarch64-linux-gnu-g++ -c main.cxx -o test_bot --std=c++17 -I/usr/local/include/aarch64-linux-gnu -L/usr/local/lib/aarch64-linux-gnu -lTgBot -lboost_system -lssl -lcrypto -lpthread

注意:必须确保交叉编译环境下已经安装了aarch64版本的TgBot、boost等依赖库,否则会出现链接失败的问题。

3. 容器编译(简化环境配置)

使用支持aarch64的容器镜像(比如Ubuntu 22.04的ARM64版本),在容器内完成编译,再把生成的test_bot二进制文件复制到生产环境。这种方式不用在本地配置复杂的交叉编译环境,适合快速解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:35:19