He creado OpenSSL desde el código fuente (una versión intencionalmente vieja, construida con ./config && make && make test
) y preferiría usar lo que he construido sin hacer make install
para enlazar con mi programa.Vinculación de librerías OpenSSL a un programa
El comando que está fallando es:
gcc -Wall -Wextra -Werror -static -Lopenssl/openssl-0.9.8k/ -lssl -lcrypto
-Iopenssl/openssl-0.9.8k/include -o myApp source1.o source2.o common.o`
y recibo una serie de errores similares a:
common.c:(.text+0x1ea): undefined reference to `SSL_write'
Esto me hace pensar que hay algo funky con mi OpenSSL. Si omito -Lopenssl/openssl-0.9.8k/
de mi mando, el error cambia a no poder:
/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto
¿Estoy recopilando OpenSSL incorrectamente? ¿O cómo debería resolver esto mejor?
Es el '-lssl -lcrypto' que debe estar al final. Cuando el vinculador escanea una biblioteca, solo se vinculan las funciones para las que ya hay referencias no definidas. Por lo tanto, debe colocar los objetos "consumidores" al principio de la línea de enlace y los objetos "de suministro" al final. – caf
Siempre soy raro acerca de aceptar mis propias respuestas. Sin embargo, lo cambiaré ahora. – mrduclaw
¿Cómo se diferencia para clan llvm? – saruftw