Heroku通过APT buildpack为Go项目提供deb依赖无法生效问题
问题根因
本次编译报错是CGO无法找到wkhtmltox对应的C开发头文件,核心原因有两个:
- 你安装的
wkhtmltopdfDeb包仅包含可执行二进制程序,不包含Go绑定依赖的C头文件和动态链接库 - Heroku APT buildpack安装的依赖默认存放在
/.apt目录下,不在CGO的默认搜索路径范围内,需要手动指定编译参数
解决步骤
1. 调整APT依赖配置
在APT buildpack对应的Aptfile中,新增开发依赖包,完整配置如下:
wkhtmltopdf libwkhtmltox-dev
libwkhtmltox-dev是Debian/Ubuntu系专门提供wkhtmltox头文件和链接库的开发包,必须安装才能满足CGO编译要求。
2. 配置Go编译环境变量
在Heroku应用的环境变量中添加以下两个变量,指定CGO的搜索路径:
CGO_CFLAGS="-I/.apt/usr/include" CGO_LDFLAGS="-L/.apt/usr/lib/x86_64-linux-gnu"
APT buildpack会将所有deb包的安装文件统一放在/.apt目录下,上述路径为固定路径,无需修改。
3. 重新构建
配置完成后重新触发Heroku构建即可,此时CGO可以正确识别到已安装的依赖包,完成编译。
内容的提问来源于stack exchange,提问作者user2082616
相关产品推荐
相关产品推荐

