LXT6架构-嵌入式Web服务器Nginx交叉编译与配置使用(ARMv7)

2019-07-12 18:25发布

      Nginx("Engine X")作为世界第三大Web服务器,如果能应用到嵌入式系统中是多么美好的事情,如下将告诉你实现的可能, 实现(通过验证)硬件配置(720Mhz ARMv7,256MB内存)。       1. 交叉编译PCRE库Nginx对PCRE库有依赖,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括Perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。          下载: pcre-8.30.tar.bz2  (参考放置路劲:/home/fqheda/XT-linux/LXT6/Eweb/eweb-v3.0.3/)
         tar  -jxvf  pcre-8.30.tar.bz2          chmod  -Rf  777 pcre-8.30          cd pcre-8.30
         ./configure CC=arm-arago-linux-gnueabi-gcc --host=arm-arago-linux-gnueabi --prefix=/home/nginx          make          make install       2. 交叉编译Nginx,Nginx不多做解释,假设"你懂的"。
         下载: nginx-1.0.15.tar.gz  (参考放置路劲:/home/fqheda/XT-linux/LXT6/Eweb/eweb-v3.0.3/)
         tar  -zxvf  nginx-1.0.15.tar.gz          chmod  -Rf  777 nginx-1.0.15          cd nginx-1.0.15       打补丁:
      补丁a:nginx-1.0.15autoccconf            case $NGX_CC_NAME in
        arm-arago-linux-gnueabi-gcc)
            # Modify By XinTinG
            # gcc 2.7.2.3, 2.8.1, 2.95.4, egcs-1.1.2
     补丁b-1:nginx-1.0.15auto ypessizeof            ----------------------------------------
          checking for $ngx_type size

          END
         ## Modify By XinTinG
         ngx_size=4
     补丁b-2:nginx-1.0.15auto ypessizeof          ## Modify By XinTinG
        ##ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS
        ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAGS
                           -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"

        ##eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
      
        ##if [ -x $NGX_AUTOTEST ]; then
        ##   ngx_size= `$NGX_AUTOTEST`
        ##    echo " $ngx_size bytes"
        ##fi
     补丁c:nginx-1.0.15autofeature
        yes)
            # /bin/sh is used to intercept "Killed" or "Abort trap" messages
            ##if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
                echo " found"
                ngx_found=yes

                if test -n "$ngx_feature_name"; then
                    have=$ngx_have_feature . auto/have
                fi
            ## Modify By XinTinG
            ##else
            ##    echo " found but is not working"
            ##fi
        ;;
     补丁d:nginx-1.0.15configure         if test -z "$NGX_PLATFORM"; then
            echo "checking for OS"

           ##NGX_SYSTEM=`uname -s 2>/dev/null`    ## Modify By XinTinG
           ##NGX_RELEASE=`uname -r 2>/dev/null`
           ##NGX_MACHINE= "arm" ##`uname -m 2>/dev/null`
     补丁e:nginx-1.0.15srcosunix gx_time.h         #include          // Modify By XinTinG
        #include
        #include
     补丁f:nginx-1.0.15srcosunix gx_errno.h
        #define NGX_ECANCELED     ECANCELED
        #define NGX_EILSEQ        EILSEQ
        #define NGX_ENOMOREFILES  0
        #define NGX_SYS_NERR      1       // Modify By XinTinG
     交叉编译:        export CC=arm-arago-linux-gnueabi-gcc
       export LD=arm-arago-linux-gnueabi-ld
       export AR=arm-arago-linux-gnueabi-ar
       export NGX_SYSTEM=linux
       export NGX_RELEASE=3.2-XT6
       export NGX_MACHINE=arm
       cd nginx-1.0.15        make clean       ./configure --with-google_perftools_module --with-http_stub_status_module --prefix=/home/nginx --with-pcre=/home/fqheda/XT-linux/LXT6/Eweb/eweb-v3.0.3/pcre-8.30 --with-cc-opt="-O2 -Wall -Wpointer-arith -I/home/nginx/include" --with-ld-opt="-L/home/nginx/lib"        make CPU=arm
       make install      打安装包:        cd /home        tar -jcvf nginx.tar.bz2 nginx
    3. 安装运行Nginx (ARM板开发平台)
      nginx.tar.bz2  解压到arm板linux shell控制台中home文件夹;       定向nginx动态库位置 :  export LD_LIBRARY_PATH=/home/nginx/lib:$LD_LIBRARY_PATH
      启动nginx :  /home/nginx/sbin/nginx -c /home/nginx/conf/nginx.conf         注:测试(http://arm_board_ip)前,请认真理解配置文件nginx.conf 并根据需要修改,本移植已在全国各地近千台物联网(嵌入式)设备上良好运行(相当于每台设备安装了一个小型网站)。
       (作者 冯青华  信庭嵌入式工作室- 主管 Blog:http://blog.csdn.net/fqheda )                                 <转载请注名来路>