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

如何在Heroku上运行C++程序?编译环境缺失问题求助

在Heroku上运行C++程序的解决方案

嘿,我来帮你搞定这个问题!你遇到的核心困扰是Heroku默认环境没装g++/gcc,又没权限自行安装,本地Mac编译的二进制文件因为架构不兼容没法用。下面给你几个靠谱的解决办法:

方法一:用Heroku官方C++ Buildpack自动编译

这是最省心的方式,Heroku会帮你搞定编译环境和编译流程:

  • 先在项目根目录写好Makefile或者CMakeLists.txt,确保能正确编译出可执行文件(比如把main.cpp编译成my_program)。
  • 打开终端,给你的Heroku应用添加C++ buildpack:
    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-cpp.git
    
  • 把代码和配置文件提交推送到Heroku:
    git add . && git commit -m "Add C++ code and build config" && git push heroku main
    
  • 等Heroku完成部署后,你的可执行文件就已经在服务器上了,接下来就可以按照你之前参考的思路,用Node.js调用它就行。

方法二:预编译适配Heroku架构的二进制文件

如果你不想让Heroku每次部署都重新编译,也可以提前在和Heroku同架构的环境里编译好二进制文件:

  • Heroku用的是Ubuntu x86_64系统,你可以用Docker模拟这个环境:
    1. 拉取Heroku的基础镜像:
      docker pull heroku/heroku:22
      
    2. 启动容器并挂载本地项目目录:
      docker run -it -v $(pwd):/app heroku/heroku:22 bash
      
    3. 在容器里安装g++并编译代码:
      apt-get update && apt-get install -y g++
      cd /app
      g++ your_cpp_file.cpp -o your_executable
      
    4. 退出容器,把编译好的your_executable放到项目根目录,再推送到Heroku。
  • 这样上传的二进制文件就能在Heroku上正常运行,不需要再额外安装编译环境。

方法三:用Multi-buildpack同时支持C++和Node.js

如果你需要同时运行Node.js和C++程序,可以用多buildpack依次配置环境:

  • 设置multi-buildpack为默认:
    heroku buildpacks:set https://github.com/heroku/heroku-buildpack-multi.git
    
  • 在项目根目录创建.buildpacks文件,内容如下:
    https://github.com/heroku/heroku-buildpack-cpp.git
    https://github.com/heroku/heroku-buildpack-nodejs.git
    
  • 提交推送后,Heroku会先搭建C编译环境、编译你的程序,再配置Node.js环境,这样你就能在Node代码里顺畅调用C可执行文件了。

另外要提醒你:Heroku上没有root权限,所以sudo apt-get这类命令肯定用不了,buildpack是Heroku官方推荐的扩展环境方式,一定要用这种正规途径~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:30