Cross Compile Error
lystormenvoy opened this issue · 3 comments
lystormenvoy commented
objs/addon/mpegts/ngx_mpegts_http_module.o \
objs/ngx_modules.o \
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -ldl -lrt -lcrypt ../pcre-8.44/.libs/libpcre.a ../openssl-1.1.1k/.openssl/lib/libssl.a ../openssl-1.1.1k/.openssl/lib/libcrypto.a -ldl ../zlib-1.2.11/libz.a \
-Wl,-E
objs/addon/nginx-rtmp-module/ngx_rtmp_handler.o: In function `ngx_rtmp_recv':
ngx_rtmp_handler.c:(.text+0x1644): undefined reference to `ngx_log_debug'
collect2: error: ld return 1
make[1]: *** [objs/Makefile:329:objs/nginx] error 1
Cross compile for hi3536d
Cross-compile-prefix: arm-hisiv400-linux-
Configure:
./configure --user=root --group=root \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--error-log-path=/usr/local/nginx/logs/error.log \
--with-http_ssl_module \
--with-cc=arm-hisiv400-linux-gcc \
--with-cpp=arm-hisiv400-linux-cpp \
--with-pcre=../pcre-8.44 \
--with-openssl=../openssl-1.1.1k \
--add-module=../nginx-client-module \
--add-module=../nginx-multiport-module \
--add-module=../nginx-toolkit-module \
--add-module=../nginx-rtmp-module \
--with-http_flv_module \
--with-http_mp4_module \
--with-debug \
--with-zlib=../zlib-1.2.11 \
--with-http_stub_status_module \
--with-cc-opt='-D_FILE_OFFSET_BITS=64 -D_LARGE_FILE' \
--with-ld-opt='-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE'
lystormenvoy commented
after comment the ngx_log_debug line then I compile success.
But thereis segment fault.
(gdb) info stack
#0 ngx_strlow (dst=0x2137a18 "", src=0x0, n=<optimized out>) at src/core/ngx_string.c:26
#1 0x0011da1c in ngx_rtmp_add_variable (cf=cf@entry=0xbe98c9f0, name=name@entry=0x369f64 <in_elts.36763>, flags=3)
at ../nginx-rtmp-module/ngx_rtmp_variables.c:973
#2 0x0010078c in ngx_rtmp_codec_add_variables (cf=0xbe98c9f0) at ../nginx-rtmp-module/ngx_rtmp_codec_module.c:1490
#3 0x000f4b74 in ngx_rtmp_block (cf=0xbe98c9f0, cmd=<optimized out>, conf=<optimized out>) at ../nginx-rtmp-module/ngx_rtmp.c:213
#4 0x00069fcc in ngx_conf_handler (last=0, cf=0xbe98c9f0) at src/core/ngx_conf_file.c:463
#5 ngx_conf_parse (cf=0xbe98c9f0, cf@entry=0xbe98c9e8, filename=0x0, filename@entry=0x2129434) at src/core/ngx_conf_file.c:319
#6 0x00067a0c in ngx_init_cycle (old_cycle=0xbe98ca5c, old_cycle@entry=0xbe98ca54) at src/core/ngx_cycle.c:284
#7 0x000558bc in main (argc=<optimized out>, argv=<optimized out>) at src/core/nginx.c:292
Breakpoint 2, ngx_strlow (dst=0x1cb5a0b "", src=0x2e8f40 "metadata", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a0c "", src=0x2e8f41 "etadata", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a0d "", src=0x2e8f42 "tadata", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a0e "", src=0x2e8f43 "adata", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a0f "", src=0x2e8f44 "data", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a10 "", src=0x2e8f45 "ata", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a11 "", src=0x2e8f46 "ta", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a12 "", src=0x2e8f47 "a", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a13 "", src=0x2e475c "metadata_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a14 "", src=0x2e475d "etadata_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a15 "", src=0x2e475e "tadata_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a16 "", src=0x2e475f "adata_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a17 "", src=0x2e4760 "data_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a18 "", src=0x2e4761 "ata_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a19 "", src=0x2e4762 "ta_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a1a "", src=0x2e4763 "a_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a1b "", src=0x2e4764 "_", n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 2, ngx_strlow (dst=0x1cb5a38 "", src=0x0, n=<optimized out>) at src/core/ngx_string.c:26
26 in src/core/ngx_string.c
(gdb)
Continuing.
Breakpoint 1, ngx_rtmp_add_variable (cf=cf@entry=0xbefff9b0, name=name@entry=0x36c7f4 <ngx_rtmp_core_variables+1260>, flags=2)
at ../nginx-rtmp-module/ngx_rtmp_variables.c:973
973 in ../nginx-rtmp-module/ngx_rtmp_variables.c
(gdb) print name->data
$71 = (u_char *) 0x2d6ee4 "time_iso8601"
(gdb) c
Continuing.
Breakpoint 1, ngx_rtmp_add_variable (cf=cf@entry=0xbefff9b0, name=name@entry=0x36c810 <ngx_rtmp_core_variables+1288>, flags=2)
at ../nginx-rtmp-module/ngx_rtmp_variables.c:973
973 in ../nginx-rtmp-module/ngx_rtmp_variables.c
(gdb) print name->data
$72 = (u_char *) 0x2d6ed8 "time_local"
(gdb) c
Continuing.
Breakpoint 1, ngx_rtmp_add_variable (cf=cf@entry=0xbefff9b0, name=name@entry=0x36c82c <ngx_rtmp_core_variables+1316>, flags=0)
at ../nginx-rtmp-module/ngx_rtmp_variables.c:973
973 in ../nginx-rtmp-module/ngx_rtmp_variables.c
(gdb) print name->data
$73 = (u_char *) 0x2e91e0 "ngx_worker"
(gdb) print name->data
$74 = (u_char *) 0x2e91e0 "ngx_worker"
(gdb) c
Continuing.
Breakpoint 1, ngx_rtmp_add_variable (cf=cf@entry=0xbefff9b0, name=name@entry=0x369f64 <in_elts.36763>, flags=3)
at ../nginx-rtmp-module/ngx_rtmp_variables.c:973
973 in ../nginx-rtmp-module/ngx_rtmp_variables.c
(gdb) print name->data
$75 = (u_char *) 0x0
(gdb) p/c name->data
$76 = 0 '\000'
(gdb) c
Continuing.
lystormenvoy commented
ngx_rtmp_codec_module.c:101
static ngx_rtmp_variable_t ngx_rtmp_codec_variabes[] = {
{ ngx_string("metadata"), NULL, ngx_rtmp_codec_variable_metadata,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 },
{ ngx_string("metadata_"), NULL, ngx_rtmp_codec_variable_metadata_arg,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 }
};
ngx_rtmp_codec_module.c:1490
static ngx_int_t
ngx_rtmp_codec_add_variables(ngx_conf_t *cf)
{
ngx_rtmp_variable_t *var, *v;
for (v = ngx_rtmp_codec_variabes; v->name.len; v++) {
**var = ngx_rtmp_add_variable(cf, &v->name, v->flags);**
if (var == NULL) {
return NGX_ERROR;
}
var->get_handler = v->get_handler;
var->data = v->data;
}
return NGX_OK;
}
ngx_rtmp_variables.c:927
ngx_rtmp_variable_t *
ngx_rtmp_add_variable(ngx_conf_t *cf, ngx_str_t *name, ngx_uint_t flags)
{
ngx_int_t rc;
ngx_uint_t i;
ngx_hash_key_t *key;
ngx_rtmp_variable_t *v;
ngx_rtmp_core_main_conf_t *cmcf;
**//name->len is 2 when segment fault but name->data is "0x0"**
if (name->len == 0) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"invalid variable name \"$\"");
return NULL;
}
lystormenvoy commented
add { ngx_null_string, NULL, NULL, 0, 0, 0 }
to
static ngx_rtmp_variable_t ngx_rtmp_codec_variabes[] = {
{ ngx_string("metadata"), NULL, ngx_rtmp_codec_variable_metadata,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 },
{ ngx_string("metadata_"), NULL, ngx_rtmp_codec_variable_metadata_arg,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 }
};
in ngx_rtmp_codec_module.c at line 104.
Then it would be
static ngx_rtmp_variable_t ngx_rtmp_codec_variabes[] = {
{ ngx_string("metadata"), NULL, ngx_rtmp_codec_variable_metadata,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 },
{ ngx_string("metadata_"), NULL, ngx_rtmp_codec_variable_metadata_arg,
0, NGX_RTMP_VAR_NOCACHEABLE|NGX_RTMP_VAR_PREFIX, 0 },
{ ngx_null_string, NULL, NULL, 0, 0, 0 }
};
can solve this problem.