termux是有nginx的,但是我想要添加一个rtmp的模块,所以需要自己编译添加模块
编译环境
- termux版本:二开版本zeroTermux-0.117.13
- nginx: 1.6.3
- nginx-rtmp-module: 1.2.2
- openssl: 1.0.2u
- pcre: 8.39
- zlib: 1.2.11
问题
GCC
一开始是遇到GCC问题
configure检查无法检测到GCC
后面我就安装了GCC了:安装教程
结果没有用上就很尴尬
宏定义错误
这个就是上面图片的错误,这个错误一直存在,百度了好多篇都没用,最后一篇在这里,但是不知道为什么我进去好难这里
src/event/modules/ngx_epoll_module.c:401:6: error: token is not a valid binary operator in a preprocessor subexpression
#if (NGX_READ_EVENT != EPOLLIN|EPOLLRDHUP)
^~~~~~~~~~~~~~
src/event/ngx_event.h:400:29: note: expanded from macro 'NGX_READ_EVENT'
#define NGX_READ_EVENT (EPOLLIN|EPOLLRDHUP)
^~~~~~~
/data/data/com.termux/files/usr/include/linux/eventpoll.h:28:36: note: expanded from macro 'EPOLLIN'
#define EPOLLIN (__force __poll_t) 0x00000001
~~~~~~~~~~~~~~~~~~ ^
src/event/modules/ngx_epoll_module.c:408:6: error: token is not a valid binary operator in a preprocessor subexpression
#if (NGX_WRITE_EVENT != EPOLLOUT)
^~~~~~~~~~~~~~~
src/event/ngx_event.h:401:28: note: expanded from macro 'NGX_WRITE_EVENT'
#define NGX_WRITE_EVENT EPOLLOUT
^~~~~~~~
/data/data/com.termux/files/usr/include/linux/eventpoll.h:30:37: note: expanded from macro 'EPOLLOUT'
#define EPOLLOUT (__force __poll_t) 0x00000004
~~~~~~~~~~~~~~~~~~ ^
2 errors generated.
make[1]: *** [objs/Makefile:822: objs/src/event/modules/ngx_epoll_module.o] Error 1
make[1]: Leaving directory '/data/data/com.termux/files/home/code/ngnix/nginx-1.6.3'
里面提到了这样搞:我选择直接修改 eventpoll.h ,将报错中提到的宏常量前面的修饰删掉,这个报错解决。
这个确实可以搞定了,好用
werror
这是一个警告,但是被GCC当成了是错误,所以make就停下了
这个只要修改objs/Makefile 文件里面
把这个-Werror删除就可以了
或者使用./configure --help查看有没有--disable-werror
有一开始在configure最后面添加一个 --disable-werror
找不到符号 crypt
ld.lld: error: undefined symbol: crypt
>>> referenced by ngx_user.c:75 (src/os/unix/ngx_user.c:75)
>>> objs/src/os/unix/ngx_user.o:(ngx_libc_crypt)
ld.lld: error: undefined symbol: glob
>>> referenced by ngx_files.c:366 (src/os/unix/ngx_files.c:366)
>>> objs/src/os/unix/ngx_files.o:(ngx_open_glob)
ld.lld: error: undefined symbol: globfree
>>> referenced by ngx_files.c:411 (src/os/unix/ngx_files.c:411)
>>> objs/src/os/unix/ngx_files.o:(ngx_close_glob)
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [objs/Makefile:264: objs/nginx] Error 1
make[1]: Leaving directory '/data/data/com.termux/files/home/code/ngnix/nginx-1.6.3'
make: *** [Makefile:8: build] Error 2
找不到符号 crypt 这个搞不定,😢 希望有大佬看到可以说一下是为什么
我已经转向向已经存在的nginx添加模块,还是要记得删除werror这个问题
这个在termux中就一个问题,也会出现
ld.lld: error: undefined symbol: crypt
但是只要把--with-ld-opt='-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -fopenmp -static-openmp -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-glob'
最后面添加一个-lcrypt
变成这样就行了--with-ld-opt='-L/data/data/com.termux/files/usr/lib -Wl,-rpath=/data/data/com.termux/files/usr/lib -fopenmp -static-openmp -Wl,--enable-new-dtags -Wl,--as-needed -Wl,-z,relro,-z,now -landroid-glob -lcrypt'
最后
欢迎关注公众号致心空间:O(∩_∩)O😁