当前位置:   article > 正文

nginx 交叉编译移植海思芯片_nginx undefined reference to crypt

nginx undefined reference to crypt

前期安装准备

1:nginx安装程序

版本:nginx-1.16.1(版本最好新一点)
官网地址:http://nginx.org/en/download.html
  • 1
  • 2

2:OpenSSL模块

版本:openssl-1.1.0i
地址:https://www.openssl.org/
  • 1
  • 2

3:Pcre模块

版本:pcre-8.43
地址:http://www.pcre.org/
  • 1
  • 2

4:Zlib模块

版本:zlib-1.2.11
地址:http://www.zlib.net/
  • 1
  • 2

5:nginx-rtmp-module模块

支持rtmp和hls转发
地址:https://github.com/arut/nginx-rtmp-module
  • 1
  • 2

6:nginx-http-flv-module模块

支持http-flv方式直播
地址:https://github.com/winshining/nginx-http-flv-module
  • 1
  • 2

7:准备工作参考

nginx-rtmp-module和nginx-http-flv-module两者只需要其中之一就可以,不需要联合编译。
地址:https://blog.csdn.net/l1028386804/article/details/80022437作者对相关的准备写的很齐全。
  • 1
  • 2

编译

./configure --with-http_ssl_module --with-cc=arm-hisiv400-linux-gcc 	--with-cpp=arm-hisiv400-linux-cpp --prefix=/home/yangjia/Nginx/test 	--with-pcre=./pcre-8.43 --with-openssl=./openssl-1.1.0i --with-zlib=./zlib-1.2.11 	--add-module=./nginx-rtmp-module-master --without-http_gzip_module 	--without-http_upstream_zone_module
  • 1

configure错误信息调整

1.错误信息:./configure: error: C compiler arm-hisiv400-linux-gcc is not found
  • 1

这是因为nginx编译的时候除了检查cc是否存在,还需要执行编译后的程序。很明显交叉编译的程序无法执行。
解决方法:vi auto/cc/name

ngx_feature_run=yes  ==> ngx_feature_run=no
  • 1
2.错误信息:./configure: error: can not detect int size
  • 1

解决方法:vi auto/types/sizeof

ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \  ==> ngx_test="gcc $CC_TEST_FLAGS $CC_AUX_FLAG \
	if [ -x $NGX_AUTOTEST ]; then``
	ngx_size=`$NGX_AUTOTEST`  ==>  ngx_size=4
  • 1
  • 2
  • 3
3.错误信息:  configure: error: in `/home/src/pcre-8.42': configure: error: C compiler cannot create executables
  • 1

解决方法:vi auto/options

 PCRE_CONF_OPT=--host=arm-hisiv400-linux
  • 1
注意:以上三个错误调整完重新configure
  • 1

Make过程调整

1.错误信息:error: ‘NGX_SYS_NERR’ undeclared (first use in this function)
  • 1

解决方法:vi objs/ngx_auto_config.h

添加:  #ifndef NGX_SYS_NERR
		#define NGX_SYS_NERR  132
		#endif
  • 1
  • 2
  • 3
2.错误信息:error: ld returned 1 exit status
  • 1

解决方法:vi auto/lib/openssl/make

&& ./config --prefix=$ngx_prefix no-shared no-threads $OPENSSL_OPT \
改为
&& ./Configure --prefix=$ngx_prefix no-shared no-threads --cross-compile-prefix=arm-hisiv400-linux- linux-generic32\
  • 1
  • 2
  • 3

注意:此错误修改完成之后重新configure之后再make之后重复1步骤。

3.错误信息: undefined reference to 'ngx_shm_alloc'
  • 1

解决方法:vi objs.nginx_auto_config.h

添加:  #ifndef NGX_HAVE_SYSVSHM
		#define NGX_HAVE_SYSVSHM 1
		#endif
  • 1
  • 2
  • 3

完成上述之后make install即可。

nginx的rtmp模块编写

rtmp {

    server {
        listen 0.0.0.0:1935;
        chunk_size 4000;
        access_log /dev/null;// 关闭log

        application videolive {
            live on;
            allow publish all;
            allow play all;
            on_play http://127.0.0.1/rtmplivevideo;
            on_play_done http://127.0.0.1/rtmpstopvideo;
            gop_cache on;//nginx-http-flv-module模块用来减少第一帧加载时间
        }
		application videolive2 
		{
			...
		}
		...
		
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

nginx运行

/xxx/xxx/nginx/sbin/nginx -c /xxx/xxx/nginx/conf/nginx.conf/ -p /xxx/xxx/nginx
/xxx/xxx/为nginx的安装位置。
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/662186
推荐阅读
相关标签
  

闽ICP备14008679号