前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx交叉编译移植遇到的坑

nginx交叉编译移植遇到的坑

作者头像
随心助手
发布2019-10-23 19:37:25
3.9K0
发布2019-10-23 19:37:25
举报
文章被收录于专栏:nginx遇上redisnginx遇上redis

nginx自身对交叉编译支持不是很好,所以在移植过程中会遇到很多问题,总结了我遇到的两个问题,分享给大家。

nginx 交叉编译用到的变量:

BUILD_PATH=$PWD

INSTALL_PATH=$PWD/install

CC_PATH=/home/ubuntu/xxx/bin/xxx-xxx-gcc

CPP_PATH=/home/ubuntu/xxx/bin/xxx-xxx-g++

CONFIG_DIR=/app/nginx

LOG_DIR=/app/nginx/log

TEMP_DIR=/app/nginx/tmp

执行交叉编译:

(1)./configure \

--prefix=$INSTALL_PATH\

--builddir=$BUILD_PATH/build\

--conf-path=$CONFIG_DIR/nginx.conf\

--error-log-path=$LOG_DIR/error.log\

--pid-path=$CONFIG_DIR/nginx.pid\

--lock-path=$CONFIG_DIR/nginx.lock\

--http-log-path=$LOG_DIR/access.log\

--http-client-body-temp-path=$TEMP_DIR/body\

--http-proxy-temp-path=$TEMP_DIR/proxy\

--http-fastcgi-temp-path=$TEMP_DIR/fastcgi\

--without-http_gzip_module\

--with-cc=$CC_PATH \

--with-cpp=$CPP_PATH \

(2)make&& make install

坑1:

checking for C compiler ... found but is not working

./configure error : C compiler gcc is not found

(1)分析:

configure首先会编译一个小测试程序,通过测试其运行结果来判断编译器是否能正常工作,由于交叉编译器所编译出的程序是无法在编译主机上运行的,故而产生此错误。

(2)解决办法:

编辑auto/cc/name文件,将21行的“exit 1”注释掉(令测试程序不会报错)

坑2:

./configure : error:can not detect int size

(1) 分析:

configure通过运行测试程序来获得“int、long、longlong”等数据类型的大小,由于交叉编译器所编译出的程序无法在编译主机上运行而产生错误

(2) 解决方法:

编辑auto/types/sizeof文件,大概36行的位置($CC 改为gcc),ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS"改为ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档