Undefined reference to t1sl_steup_key_block lors de la liaison d'OpenSSL

J'ai eu un problème de liaison d'une bibliothèque OpenSSL dans un projet existant.
Où je ne me trompe?

Ci-dessous sont les étapes que j'ai suivies.

J'ai téléchargé la bibliothèque SSL, configuré et installé. Il est installé dans /usr/local/ssl.

2) j'ai copié libcrypto.a et libssl.a de /usr/local/ssl/lib dans mon projet, quelque chose comme /mnt/linux/bla/bla/lib.

3) Puis-je modifier le fichier de créer et ajouté chemin de libssl libcrpto. Le chemin est ajouté un qui est dans un projet comme /mnt/linux/bla /bla

3) faire

4) projet de construction via la nappe de modifier

Lorsqu'il construit je reçois une longue erreur de la chaîne, comme

../lib/libssl.a(t1_enc.o) :In function 't1sl_steup_key_block: undefined ref

Maintenant, je suppose que la copie .un fichiers en projet pourrait être un problème. Est il n'y a aucune alternative pour qui ou dois-je utiliser ln -s de lien .un des fichiers de la forme /usr/local/openssl/lib dans mon projet de dossier de la bibliothèque? Ci-dessous est l'erreur.

   Debug/FC5/m2pa.o  -ldl -lpthread -ltdapi ../septel/gctlib.lib ../lib/libpq.a ../asn1/lib/libasn1per.a ../mysql/lib/libmysqlclient.a     -L../lib ../asn1/lib/libasn1rt.a -lm -lcrypt -lcrypto -lssl  -rdynamic
../lib/libssl.a(ssl_lib.o): In function `SSL_set_quiet_shutdown':ssl_lib.c:(.text+0x670): multiple definition of `SSL_set_quiet_shutdown'
../mysql/lib/libmysqlclient.a(ssl.o):ssl.cpp:(.text+0x125c): first defined here
/usr/bin/ld: Warning: size of symbol `SSL_set_quiet_shutdown' changed from 45 in ../mysql/lib/libmysqlclient.a(ssl.o) to 12 in ../lib/libssl.a(ssl_lib.o)
../lib/libssl.a(ssl_lib.o): In function `SSL_get_quiet_shutdown':ssl_lib.c:(.text+0x680): multiple definition of `SSL_get_quiet_shutdown'
../mysql/lib/libmysqlclient.a(ssl.o):ssl.cpp:(.text+0x12down' changed from 35 in ../mysql/lib/libmysqlclient.a(ssl.o) to 8 in ../lib/libssl.a(ssl_lib.o)
../lib/libssl.a(ssl_err2.o): In function `SSL_load_error_strings':ssl_err2.c:(.text+0x4): undefined reference to `ERR_load_crypto_strings'
../lib/libssl.a(ssl_algs.o): In function `SSL_library_init':ssl_algs.c:(.text+0x4): undefined reference to `EVP_des_cbc'
:ssl_algs.c:(.text+0xc): undefined reference to `EVP_add_cipher'
:ssl_algs.c:(.text+0x11): undefined reference to `EVP_des_ede3_cbc'
:ssl_algs.c:(.text+0x19): undefined reference to `EVP_add_cipher'
:ssl_algs.c:(.text+0x1e): undefined reference to `EVP_idea_cbc'
Besoin de plus d'informations. Mais, j'ai libssl.un libcrypto.o dans mon build (je suis bâtiment de la croix-plate-forme et ont besoin de cibler certains builds) et juste un lien normalement. Ne vous ont -lm -ldl dans la ligne de lien? J'aurais besoin de voir ce que les symboles sont manquantes pour être en mesure de deviner ce que vous n'êtes pas le lien.
Merci pour la réponse . Mon premier doute est " pensez-vous de sa bonne procédure pour copier simplement libcrypto.un et libssl.a partir de /usr/local/ssl/lib dans mon projet dossier lib? OU ai-je besoin de faire des liens symboliques comme ln -s
c'est ma ligne de plus dans le fichier italique en gras '# bibliothèques Communes COM_LIB=-ldl -lpthread -ltdapi ../septel/gctlib.lib ../lib/libpq.un \ ../asn1/lib/libasn1per.un \ ../mysql/lib/libmysqlclient.../lib/libcrypto.../lib/libssl.un\ ../asn1/lib/libasn1rt.l'a-lm -lcrypt -lcrypto -lssl '
Ok, votre construction de la ligne de vous, y compris libssl et libcrypto deux fois. Une fois explicitement (../lib/libssl.et plus loin -ssl - même pour libcrypto) vous devriez faire -L ../lib puis -lssl. Qui pourrait être votre problème si vous utilisez gcc. Sinon, vous pouvez essayer de -Wl, start-group <your library list> -Wl, end-group autour de la liste des bibliothèques de sorte GCC recherche les symboles correctement. J'ai besoin de voir vos erreurs, les symboles non définis, peut-être vous dire ce que libs que vous êtes absent.
PS: Vous n'avez pas besoin d'avoir libssl.un libcrypto.un dans votre arbre de construction. Sauf si vous faites de la croix-plate-forme des choses, alors vous devriez avoir la bonne version de votre arbre (ou mieux obtenir le SSL source et de le créer à votre cible).

OriginalL'auteur samprat | 2011-04-18