begin process at 2012 05 28 19:09:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

Complier pkread.c sous linux (opensuse)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Complier pkread.c sous linux (opensuse)

samedi 19 septembre 2009 à 15:43:26 | Complier pkread.c sous linux (opensuse)

onpise

Bonjour,

Openssl fourni des programmes demos dont pkread.c fait parti. J'ai utilisé le gestionnaire d'installation de opensuse pour installer openssl. Après l'installation j'ai contrôlé que les fichiers des "include" existe bien. Ils sont dans /usr/include/openssl. J'ai essayé de compiler le programme avec les commandes :

Code :
gcc pkread.c -B /usr/include /tmp/ccagAhiE.o: In function `main':


pkread.c:(.text+0x43): undefined reference to `OPENSSL_add_all_algorithms_noconf'
pkread.c:(.text+0x48): undefined reference to `ERR_load_crypto_strings'
pkread.c:(.text+0xa1): undefined reference to `d2i_PKCS12_fp'
pkread.c:(.text+0xdc): undefined reference to `ERR_print_errors_fp'
pkread.c:(.text+0x109): undefined reference to `PKCS12_parse'
pkread.c:(.text+0x134): undefined reference to `ERR_print_errors_fp'
pkread.c:(.text+0x147): undefined reference to `PKCS12_free'
pkread.c:(.text+0x1de): undefined reference to `PEM_write_PrivateKey'
pkread.c:(.text+0x20c): undefined reference to `PEM_write_X509_AUX'
pkread.c:(.text+0x21e): undefined reference to `sk_num'
pkread.c:(.text+0x24f): undefined reference to `sk_value'
pkread.c:(.text+0x25b): undefined reference to `PEM_write_X509_AUX'
pkread.c:(.text+0x268): undefined reference to `sk_num'
collect2: ld returned 1 exit status

gcc pkread.c -B /usr/include/openssl

/tmp/ccENU53D.o: In function `main':
pkread.c:(.text+0x43): undefined reference to `OPENSSL_add_all_algorithms_noconf'
pkread.c:(.text+0x48): undefined reference to `ERR_load_crypto_strings'
pkread.c:(.text+0xa1): undefined reference to `d2i_PKCS12_fp'
pkread.c:(.text+0xdc): undefined reference to `ERR_print_errors_fp'
pkread.c:(.text+0x109): undefined reference to `PKCS12_parse'
pkread.c:(.text+0x134): undefined reference to `ERR_print_errors_fp'
pkread.c:(.text+0x147): undefined reference to `PKCS12_free'
pkread.c:(.text+0x1de): undefined reference to `PEM_write_PrivateKey'
pkread.c:(.text+0x20c): undefined reference to `PEM_write_X509_AUX'
pkread.c:(.text+0x21e): undefined reference to `sk_num'
pkread.c:(.text+0x24f): undefined reference to `sk_value'
pkread.c:(.text+0x25b): undefined reference to `PEM_write_X509_AUX'
pkread.c:(.text+0x268): undefined reference to `sk_num'
collect2: ld returned 1 exit status


Code C/C++ :
/* pkread.c */


#include <stdio.h>
#include <stdlib.h>
#include <openssl/pem.h>
#include <openssl/err.h>
#include <openssl/pkcs12.h>

/* Simple PKCS#12 file reader */

int main(int argc, char **argv)
{
FILE *fp;
EVP_PKEY *pkey;
X509 *cert;
STACK_OF(X509) *ca = NULL;
PKCS12 *p12;
int i;
if (argc != 4) {
fprintf(stderr, "Usage: pkread p12file password opfile\n");
exit (1);
}
SSLeay_add_all_algorithms();
ERR_load_crypto_strings();
if (!(fp = fopen(argv[1], "rb"))) {
fprintf(stderr, "Error opening file %s\n", argv[1]);
exit(1);
}
p12 = d2i_PKCS12_fp(fp, NULL);
fclose (fp);
if (!p12) {
fprintf(stderr, "Error reading PKCS#12 file\n");
ERR_print_errors_fp(stderr);
exit (1);
}
if (!PKCS12_parse(p12, argv[2], &pkey, &cert, &ca)) {
fprintf(stderr, "Error parsing PKCS#12 file\n");
ERR_print_errors_fp(stderr);
exit (1);
}
PKCS12_free(p12);
if (!(fp = fopen(argv[3], "w"))) {
fprintf(stderr, "Error opening file %s\n", argv[1]);
exit(1);
}
if (pkey) {
fprintf(fp, "***Private Key***\n");
PEM_write_PrivateKey(fp, pkey, NULL, NULL, 0, NULL, NULL);
}
if (cert) {
fprintf(fp, "***User Certificate***\n");
PEM_write_X509_AUX(fp, cert);
}
if (ca && sk_num(ca)) {
fprintf(fp, "***Other Certificates***\n");
for (i = 0; i < sk_X509_num(ca); i++)
PEM_write_X509_AUX(fp, sk_X509_value(ca, i));
}
fclose(fp);
return 0;
}


Il me semble que chaque fois que je dois compiler un programme C avec des libs externe j'ai ce genre de problème. Donc je suis ouvert à toute redirection sur un site qui explique comment résoudre ces problèmes de "undefined référence". Pour information OPENSSL_add_all_algorithms_noconf est déclaré dans un header include par pem.h. Je sais pas si le problème vient de là.

Merci par avance pour votre aide.

dimanche 20 septembre 2009 à 18:01:17 | Re : Complier pkread.c sous linux (opensuse)

rt15

Membre Club Administrateur CodeS-SourceS

Salut,

Bin c'est pas un problème de compilation, c'est un problème de link.
C'est ultra classique.
Ta librairie est fournit avec un dossier include et un dossier lib.
Le dossier include tu t'en ai servi.
Maintenant, faut te servir du dossier lib, qui contient des .lib ou des .a utilisés au link.

Il faut que tu les mettes en entrée de ton lieur.

lundi 21 septembre 2009 à 10:17:09 | Re : Complier pkread.c sous linux (opensuse)

onpise

Super merci en effet c'était tout simple. Merci de m'y avoir linker :-).



Cette discussion est classée dans : text, to, reference, undefined, pkread


Répondre à ce message

Sujets en rapport avec ce message

prob avec SDL [ par kuroro ] alors voila , j'ai mis tous les fichiers .h dans le repertoire include ( de dev-c++ 4 ) et les fichier .a dans le repertoire lib , mais quand je veux Erreur de compilation via un makefile [ par alfar007 ] Bonjour, j'ai un probleme de compilation avec GCCj'obtient ceci comme erreur:partition.o:partition.c:(.text+0x1e86): undefined reference to `SHA1'ssl. problème de compilation [ par riadh8 ] Slt tout le monde voici le code que j'ai trouvé dans se site: ----------------------------------- #include #include #include #include #include # D3dx9 lib probleme [ par orak ] bonjour à tous, je me suis mis depuis qq jours a directx, tt marche bien, mais des que je veux compiler un programme utilisant la librairie "d3dx9",je server [ par snpier wolf ] bonjours a tous,voila j'ai un petit soussi avec C++.je veux fair un serveur avec un ou des cliens.voila simplement je ne sais ps le fair alors, alors Unic Instance [ par nem02004 ] Re, jai essayer de prendre: http://cppfrance.com/code.aspx?ID=25238mais sans succés, jarrive mm pas a compiler cette source il me dit:  [Linker error] probleme de compilation: UNDEFINED REFERENCE TO.... [ par unbreak ] Bonjour, en fait je ne comprends pas pourquoi cette source me pose probleme. https://sourceforge.net/project/showfiles.php?group_id=121930 elle me f Problèmes de linker avec GMP [ par jo_le_coco ] Bonjour, J'ai récemment installé la bibliothèque GNU MP Bignum Library sur Dev-C++ (j'ai Windows XP). Tout fonctionne à la compilation, mais le li Problème avec Glut ! [ par moijo745 ] Bonjour tout le monde.Je suis sous dev-c++ 4.9.9.2 et j'ai tous les packages, bref tout est bien installé.Voilà j'ai un problème avec la librairie g PROBLEME AVEC UNE BIBLIOTHEQUE GRAPHIQUE [ par tekila_bandita ] Bonjour, je me suis acheté un livre sur le C++ intitulé "La BIBLE C++" de Cay HORSTMANN et timothy BUDD... Dans ce livre, pour l'introduction aux stru


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,716 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales