如何在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模拟这个环境:
- 拉取Heroku的基础镜像:
docker pull heroku/heroku:22 - 启动容器并挂载本地项目目录:
docker run -it -v $(pwd):/app heroku/heroku:22 bash - 在容器里安装g++并编译代码:
apt-get update && apt-get install -y g++ cd /app g++ your_cpp_file.cpp -o your_executable - 退出容器,把编译好的
your_executable放到项目根目录,再推送到Heroku。
- 拉取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
相关产品推荐
相关产品推荐

