secret rizadora rizador profesional pro precio plancha pinza para onduladora ondas mira maquina hacer gama cabello babyliss curl gcc segmentation-fault ldd

curl - rizadora - Hacer rizos independientes lleva a segfault



rizador profesional (1)

Me gustaría construir una versión independiente de `curl sin ninguna dependencia de biblioteca (incluso libc) para un sistema incrustado con una versión muy antigua de libc.

Desde curl github actual, configuro la compilación con este comando:

./configure --disable-shared --enable-static-nss --prefix=/tmp/curl LDFLAGS=''-static -static-libgcc -Wl,-Bstatic -lc'' LIBS=''-lc -lssl -lcrypto -lz -ldl'' [...] curl version: 7.50.2-DEV Host setup: x86_64-pc-linux-gnu Install prefix: /tmp/curl Compiler: gcc SSL support: enabled (OpenSSL) SSH support: no (--with-libssh2) zlib support: enabled GSS-API support: no (--with-gssapi) TLS-SRP support: enabled resolver: default (--enable-ares / --enable-threaded-resolver) IPv6 support: enabled Unix sockets support: enabled IDN support: no (--with-{libidn,winidn}) Build libcurl: Shared=no, Static=yes Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) SSPI support: no (--enable-sspi) ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca fallback: no LDAP support: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS support: no (--enable-ldaps) RTSP support: enabled RTMP support: no (--with-librtmp) metalink support: no (--with-libmetalink) PSL support: no (libpsl not found) HTTP2 support: disabled (--with-nghttp2) Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP

Luego, durante la fase de creación, recibo las siguientes advertencias:

curl-tool_homedir.o: In function `homedir'': tool_homedir.c:(.text+0x60): warning: Using ''getpwuid'' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking ../lib/.libs/libcurl.a(libcurl_la-netrc.o): In function `Curl_parsenetrc'': netrc.c:(.text+0x3c3): warning: Using ''getpwuid_r'' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking ../lib/.libs/libcurl.a(libcurl_la-curl_addrinfo.o): In function `Curl_getaddrinfo_ex'': curl_addrinfo.c:(.text+0x73): warning: Using ''getaddrinfo'' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libcrypto.a(fips.o): In function `verify_checksums'': (.text+0x4e6): warning: Using ''dlopen'' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Puedo continuar y realizar la make install para obtener el binario final.

El binario no tiene dependencia:

$ ldd /tmp/curl/bin/curl not a dynamic executable $ nm /tmp/curl/bin/curl | grep " U " $

Pero el binario no funciona en absoluto:

$ /tmp/curl/bin/curl -version Segmentation fault (core dumped)

¿Tiene alguna idea del problema de la causa raíz?

EDIT 1: salida de GDB:

(gdb) run Starting program: /tmp/curl/bin/curl Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? ()

EDICION 2:

$ nm /tmp/curl/bin/curl | grep getpwuid 0000000000655770 T getpwuid 00000000006558f0 T __getpwuid_r 00000000006558f0 W getpwuid_r 00000000006558f0 T __new_getpwuid_r 0000000000663cf0 T __nscd_getpwuid_r

Tal vez el problema proviene de W :

W El símbolo es un símbolo débil que no ha sido etiquetado específicamente como un símbolo de objeto débil. Cuando un símbolo definido débil está vinculado con un símbolo definido normal, el símbolo definido normal se utiliza sin error. Cuando un símbolo indefinido débil está vinculado y el símbolo no está definido, el valor del símbolo débil se convierte en cero sin error.

EDIT 3: Si getpwuid el enlace SSL recibí la misma advertencia para getpwuid pero el binario está funcionando:

./configure --disable-shared --enable-static-nss --prefix=/tmp/curl LDFLAGS=''-static -static-libgcc -Wl,-Bstatic,-lc'' ldd /tmp/curl/bin/curl not a dynamic executable /tmp/curl/bin/curl --version curl 7.50.2-DEV (x86_64-pc-linux-gnu) libcurl/7.50.2-DEV zlib/1.2.8 Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftp Features: IPv6 Largefile libz UnixSockets nm /tmp/curl/bin/curl | grep getpwuid 00000000004f52d0 T getpwuid 00000000004f5450 T __getpwuid_r 00000000004f5450 W getpwuid_r 00000000004f5450 T __new_getpwuid_r 0000000000502cd0 T __nscd_getpwuid_r

Pero necesito agregar SSL para compatibilidad con HTTPS, por lo que el problema sigue abierto.

EDIT 4: El problema está directamente relacionado con nss . Un punto extraño es que ./configure --prefix=/tmp/curl --disable-shared --enable-static-nss LDFLAGS=''-static -static-libgcc -Wl,-Bstatic'' LIBS=''-ls'' produce un trabajo independiente ejecutable pero sin SSL. Los problemas nss se deben a la vinculación SSL.


Ingrese la versión de desarrollo fuente de openssl https://www.openssl.org/ y recompilela para enlaces estáticos (finaliza con ''.a'' en lugar de ''.so''). A continuación, reconstruya Curl, vinculándolo a la biblioteca estática de openssl que ha creado.

Sabes que libssl te está dando problemas, pero puede que no sea la única biblioteca que lo es. Cuando encuentre la siguiente biblioteca que le está dando problemas, haga lo mismo con ella: extraiga la versión de desarrollo fuente y vuelva a generarla para la vinculación estática.