默认编译出的 nginx 可执行文件会依赖编译环境的一些动态库,现在想着编译出来之后可以在不同的设备上部署,是否可以在编译时静态链接,本人尝试使用如下编译参数
./configure --with-pcre --prefix=/home/nginx-1.16.1/output/ --with-http_ssl_module --with-openssl=/usr/src/openssl-1.0.1g --with-pcre=/home/source_pkt/pcre-8.44 --with-zlib=/home/source_pkt/zlib-1.2.11 --with-cc-opt=-static-libgcc --with-ld-opt='-static'
在编译时加入了-static
但是报错如下:
checking for --with-ld-opt="-static" ... not found
./configure: error: the invalid value in --with-ld-opt="-static"
有没有知大带宽服务器道怎么静态编译 nginx 的,谢谢
问这种问题得说下自己是什么系统环境吧,不然别人比你更加一头雾水。
可能缺少 glibc,检查下,没有就安装之后再试。最好是用 Docker
我想问下目前 nginx 支持静态编译不,我的环境是标准的 Centos8
支持啊,网上也挺多分享文章的,你可以搜下看看。
CentOS 8 到今年 12 月就不维护了,早点弃吧。7 的维护还能支持到 2024 年 6 月
依赖实在是太多了,make 都难
不知道 exe 是怎么编译出来的,cygwin 环境下搞过,失败告终。
官方的 exe 就是静态的
对于 nginx 来说 so easy , https://github.com/suconghou/docker/tree/master/nginx
appimage ?
官方文档下,这个参数是这么用的
--with-ld-opt=parameters
sets additional parameters that will be used during linking. When using the system PCRE library under FreeBSD, --with-ld-opt="-L /usr/local/lib" should be specified.
CentOS 8 到期可以换 RHEL 8,OL8,alma,rocky,等等,为什么要弃呢……
随便搜到了别人的脚本,你可以对照着试验: https://trac.nginx.org/nginx/ticket/903
这个编译出来的 nginx 不依赖动态库吗?
https://trac.nginx.org/nginx/ticket/903 这个我看了,加上-static 参数,报错
不依赖, 你可以把镜像里的 nginx 文件复制出来,都能运行
虽然有点文不对题,但你这个需求不就是典型的 docker 场景么?
可是我们现在不是为了部署到容器,不过跟 docker 场景还真一个情况,你们有 docker 部署方法吗
部署到容器不是目的是手段啊
。。。。。。。。。。。。。
@1260475686
你这个场景下,直接把程序打包成镜像然后用容器跑不就无关乎系统依赖了?