nginx 交叉编译

nginx 交叉编译

aarch64
gcc version 10.3.1 20210621 (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29))

依赖

  • libatomic_ops - https://github.com/ivmai/libatomic_ops.git - release-7_6
  • pcre - https://udomain.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.bz2
  • oepnssl - https://github.com/openssl/openssl.git - OpenSSL_1_1_0-stable
  • zlib - https://github.com/madler/zlib.git - v1.2.9
  • nginx - https://github.com/nginx/nginx.git - branches/stable-1.22
.
├── libatomic_ops
├── nginx
├── openssl
├── pcre-8.45
├── pcre-8.45.tar.bz2
├── README.md
└── zlib

nginx 相关修改

type

diff --git a/auto/types/sizeof b/auto/types/sizeof
index 480d8cfa4..603d8b358 100644
--- a/auto/types/sizeof
+++ b/auto/types/sizeof
@@ -39,11 +39,13 @@ ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
 eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
 
 
-if [ -x $NGX_AUTOTEST ]; then
-    ngx_size=`$NGX_AUTOTEST`
-    echo " $ngx_size bytes"
-fi
+# if [ -x $NGX_AUTOTEST ]; then
+#     ngx_size=`$NGX_AUTOTEST`
+#     echo " $ngx_size bytes"
+# fi
 
+ngx_size=8
+echo " $ngx_size bytes"
 
 case $ngx_size in
     4)

gcc

diff --git a/auto/cc/name b/auto/cc/name
index ded93f5bc..d6ab27a6a 100644
--- a/auto/cc/name
+++ b/auto/cc/name
@@ -7,7 +7,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
 
     ngx_feature="C compiler"
     ngx_feature_name=
-    ngx_feature_run=yes
+    ngx_feature_run=no
     ngx_feature_incs=
     ngx_feature_path=
     ngx_feature_libs=

libatomic

diff --git a/auto/lib/libatomic/conf b/auto/lib/libatomic/conf
index d1e484ab3..693a7132e 100644
--- a/auto/lib/libatomic/conf
+++ b/auto/lib/libatomic/conf
@@ -7,8 +7,8 @@ if [ $NGX_LIBATOMIC != YES ]; then
 
     have=NGX_HAVE_LIBATOMIC . auto/have
     CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src"
-    LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/libatomic_ops.a"
-    CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/libatomic_ops.a"
+    LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/.libs/libatomic_ops.a"
+    CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/.libs/libatomic_ops.a"
 
 else
 
diff --git a/auto/lib/libatomic/make b/auto/lib/libatomic/make
index c90318ea1..c19253664 100644
--- a/auto/lib/libatomic/make
+++ b/auto/lib/libatomic/make
@@ -5,12 +5,13 @@
 
     cat << END                                            >> $NGX_MAKEFILE
 
-$NGX_LIBATOMIC/src/libatomic_ops.a:	$NGX_LIBATOMIC/Makefile
+$NGX_LIBATOMIC/src/.libs/libatomic_ops.a:	$NGX_LIBATOMIC/Makefile
 	cd $NGX_LIBATOMIC && \$(MAKE)
 
 $NGX_LIBATOMIC/Makefile:	$NGX_MAKEFILE
 	cd $NGX_LIBATOMIC \\
 	&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
-	&& ./configure
+	&& ./autogen.sh \\
+	&& ./configure --host=aarch64-linux-gnu
 
 END

pcre

diff --git a/auto/lib/pcre/make b/auto/lib/pcre/make
index 839ef294b..33173e672 100644
--- a/auto/lib/pcre/make
+++ b/auto/lib/pcre/make
@@ -89,7 +89,7 @@ $PCRE/Makefile:	$NGX_MAKEFILE
 	cd $PCRE \\
 	&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
 	&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\
-	./configure --disable-shared $PCRE_CONF_OPT
+	./configure --host=aarch64-linux-gnu --disable-shared $PCRE_CONF_OPT
 
 $PCRE/.libs/libpcre2-8.a:	$PCRE/Makefile
 	cd $PCRE \\
@@ -155,7 +155,7 @@ $PCRE/Makefile:	$NGX_MAKEFILE
 	cd $PCRE \\
 	&& if [ -f Makefile ]; then \$(MAKE) distclean; fi \\
 	&& CC="\$(CC)" CFLAGS="$PCRE_OPT" \\
-	./configure --disable-shared $PCRE_CONF_OPT
+	./configure --host=aarch64-linux-gnu --disable-shared $PCRE_CONF_OPT
 
 $PCRE/.libs/libpcre.a:	$PCRE/Makefile
 	cd $PCRE \\

openssl

diff --git a/auto/lib/openssl/make b/auto/lib/openssl/make
index 126a23875..498d096e7 100644
--- a/auto/lib/openssl/make
+++ b/auto/lib/openssl/make
@@ -51,7 +51,8 @@ END
 $OPENSSL/.openssl/include/openssl/ssl.h:	$NGX_MAKEFILE
 	cd $OPENSSL \\
 	&& if [ -f Makefile ]; then \$(MAKE) clean; fi \\
-	&& ./config --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \\
+	&& ./config no-asm no-shared --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \\
+    && sed -i "s/ -m64/  /g" ./Makefile \\
 	&& \$(MAKE) \\
 	&& \$(MAKE) install_sw LIBDIR=lib

编译

# 起始目录包含所有依赖,以及切换到具体的分支,完成 nginx 相关的修改
export WS=$(pwd)
export OPENSSL_DIR="${WS}"/openssl
export LIBATOMIC_DIR="${WS}"/libatomic_ops
export PCRE_DIR="${WS}"/pcre-8.45
export ZLIB_DIR="${WS}"/zlib

export CC=aarch64-linux-gcc
export CXX=aarch64-linux-g++
export AR=aarch64-linux-ar
export RANLIB=aarch64-linux-ranlib

export CACHE_DIR="/var/run"

cd ${WS}/nginx
./auto/configure --prefix="${WS}"/install --conf-path="${WS}"/install \
--error-log-path="${CACHE_DIR}" --pid-path="${CACHE_DIR}" \
--with-threads --with-http_flv_module \
--with-http_ssl_module \
--with-cc=aarch64-linux-gcc --with-cpp=aarch64-linux-g++ \
--with-pcre="${PCRE_DIR}" \
--with-zlib="${ZLIB_DIR}" \
--with-openssl="${OPENSSL_DIR}" \
--with-libatomic="${LIBATOMIC_DIR}"

sed -i '7i #define NGX_HAVE_SYSVSHM 1'  ./objs/ngx_auto_config.h

make
# ${WS}/install
make install
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值