[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Problemi di compilazione



Buongiorno a tutti,
scrivo perché non riesco a capire come mail il linker non trovi
automaticamente una libreria. Il problema si ha compilando un qualsiasi
sorgente che utilizzi libssl, libreria che richiede una seconda libreria
chiamata libcrypto.

Ad esempio, il seguente programma, che verifica se la libreria ssl ha la
funzione SSL_library_init():

char SSL_library_init();
int main()
{
  return SSL_library_init();
}

viene normalmente compilato con il comando:

$ gcc conftest.c -lssl

ma nel mio computer il comando non funziona, a meno che non aggiunga in
fondo anche la nome della second libreria:

$ gcc conftest.c -lssl -lcrypto

gli errori che ottengo nel primo caso sono i seguenti:

/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `BIO_pop@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `EVP_CipherInit_ex@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `BUF_memdup@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `EVP_MD_CTX_copy@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `sk_free@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `sk_shift@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `CRYPTO_get_ex_new_index@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `EVP_rc2_cbc@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `DH_new@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `EVP_PKEY_encrypt_init@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `X509_VERIFY_PARAM_get_depth@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `PEM_read_bio_PrivateKey@OPENSSL_1.0.0'
/usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so: undefined reference to `CRYPTO_get_ex_data@OPENSSL_1.0.0'

e tanti altri, per ogni simbolo della libreria libcrypto.

Il problema sembra proprio legato al fatto che la seconda libreria non
viene trovata automaticamente. Il linker però è al corrente della
dipendenza, tant'è che:

$ ldd /usr/lib/gcc/i486-linux-gnu/4.6.1/../../../../lib/libssl.so
	linux-gate.so.1 =>  (0xb7743000)
	libcrypto.so.1.0.0 => /usr/lib/i686/cmov/libcrypto.so.1.0.0 (0xb7526000)
	libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb7522000)
	libz.so.1 => /usr/lib/libz.so.1 (0xb750d000)
	libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb73b3000)
	/lib/ld-linux.so.2 (0xb7744000)

qualcuno ha idea di quale possa essere il problema?

Grazie mille,
Giuseppe


Reply to: