Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/12/2009, à 19:22

detoulouse

UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

bonjour à tous, je vous expose succinctement mon probleme. :
1 - je programme en général avec DEVC++ sous wintruc, et j'arrive à faire pas mal de choses, y compris à utiliser la lib GMP (gestion et calcul en grands nombres)

2- je cherche à tester CODE::BLOCKS 8.02 sous UBUNTU9.10 que je viens d installer
pour ce faire j'ai (pour faire la meme chose) commencé par tester ce petit programme (qui cherche le min et le max d'une liste et qui tourne tres bien AUSSI sous code::blocks)

code 1 : marche aussi bien en devcpp XP qu'avec  code::block 8.02  sous OS linux 9.10

================================
#include <iostream.h>
 
#include <stdio.h>
 
#include<math.h>
 
#include <windows.h>
 
int main(void)
 
{
 
int tab[10];
 
int nb,i,min,max;
 
printf("nb de donnees??");
 
scanf("%d",&nb);
 
for (i=0;i<nb;i++)
 
    {
 
               printf("valeur a entrer:");
 
               scanf("%d",&tab[i]);
 
               }
 
//calcul du min
 
min=32767;
 
for (i=0;i<nb;i++)
 
    {
 
    if (tab[i]<min)
 
             {
 
                   min=tab[i];
 
                   }     
 
     }
 
     printf("le min est %d:",min);
 
     
 
     //calcul du max
     max=-1;
 
for (i=0;i<nb;i++)
 
    {
 
    if (tab[i]>max)
 
             {
 
                   max=tab[i];
 
                   }  
     }
 
     printf("le max est %d:",max);
 
     
 
    system("pause");
 
    getchar();
 
return 0;
 
}

====================================


nouvelle etape : je veux tester un prog qui utilise la lib GMP (que j'ai prealablement installée sur ubuntu) (ce prog tourne tres bien sous devcpp en XP):

code 2 (fonctionnel sous devcpp XP mais PAS sous code::blocks 8.02)

//=================================================================//
// Fichier principal                                               //
//=================================================================//
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>		// Librairie mathématique
 
 
//=================================================================//
// Fonction principale du programme                                //
//=================================================================//
int main(int argc, char* argv[])
{
	int    n;
	mpz_t  nbre;		// Définit un nombre
						// mp = multiple precision
						// z = entier en math
 
	// Affiche ce que l'on fait
	printf("Affichage d'un nombre sous la forme 2^n-1\n");
 
	// Demande et récupère une valeur de n
	printf("Valeur de n = ");
	scanf("%d", &n);
 
	// Initialise le nbre de mersenne à 2
	mpz_init(nbre);					// Initialise la variable
	mpz_add_ui(nbre, nbre, 2);		// Place 2 dedans
 
	// Calcul 2^n-1
	mpz_pow_ui(nbre, nbre, n);		// Calcul 2^n
	mpz_sub_ui(nbre, nbre, 1);		// Enlève 1
 
	// Affiche le nombre
	gmp_printf("%Zd\n", nbre);
 
	system("pause");
	return 0;
}
 
 

voilà le log de compil : (notez qu il ne dit pas que la lib gmp.H est introuvable....donc pour moi c'est OK)

Citation:
------------- Build: Debug in essai-gmp ---------------

Compiling: main.cpp
Linking console executable: bin/Debug/essai-gmp
obj/Debug/main.o: In function `main':
/home/thebest/Bureau/essai-gmp/main.cpp:27: und:lol::lol::lol::lol::lol::lol::lol:efined reference to `__gmpz_init'
/home/thebest/Bureau/essai-gmp/main.cpp:28: undefined reference to `__gmpz_add_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:31: undefined reference to `__gmpz_pow_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:32: undefined reference to `__gmpz_sub_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:35: undefined reference to `__gmp_printf'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
5 errors, 0 warnings

3-
VOILA ! il est clair que je ne sais pas compiler mon projet avec la librairie GMP, pourtant je l'ai installée correctement sous UBUNTU (je suis pas un newbie, mais pas non plus un as du mode console) :
mes manips furent les suivantes

Code :

sudo aptitude install m4

puis :

Citation:

cd ~
mkdir RSA
cd RSA
wget http://ftp.sunet.se/pub/gnu/gmp/gmp-4.2.3.tar.gz
tar xfz gmp-4.2.3.tar.gz
cd gmp-4.2.3
./configure --enable-cxx
make
make check
sudo make install
cd ..
rm -rf gmp-4.2.3 gmp-4.2.3.tar.gz
cd /usr/lib/
sudo ln -s /usr/local/lib/libgmpxx.so.4 libgmpxx.so.4
cd ~/RSA

l'install s'est passée impec !!

pourtant je ne trouve pas la lib gmpxx.a ni gmp.a (j'ai cherché dans usr/lib/codeblocks)

donc si qq pouvait m'aider à :

-verifier si la lib est bien ou elle doit etre

-tester mon petit prog et me donner la marche à suivre pour linker , car je pense que mon probleme est la


merci d avance et desolé pour ce post un peu long !

Dernière modification par detoulouse (Le 23/12/2009, à 00:23)

Hors ligne

#2 Le 22/12/2009, à 19:54

dylouf

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

Bonjour,

La librairie s'est installée dans le dossier /usr/lib

/home/thebest/Bureau/essai-gmp/main.cpp:27: undefined reference to `__gmpz_init'
/home/thebest/Bureau/essai-gmp/main.cpp:28: undefined reference to `__gmpz_add_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:31: undefined reference to `__gmpz_pow_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:32: undefined reference to `__gmpz_sub_ui'
/home/thebest/Bureau/essai-gmp/main.cpp:35: undefined reference to `__gmp_printf'

Cette erreur survient lors du linkage. Ton programme ne doit donc pas inclure ta librairie tout simplement, donc le linkage ne fonctionne pas et donne ces erreurs ...

Il suffit pour cela, dans code::blocks, d'inclure ta librairie en suivant ces étapes :

- Project -> build options
- onglet "linker settings"
- dans le box "Link libraries", cliquer sur add et aller chercher la librairie dans /usr/lib/

Redit nous si ça fonctionne ...

Dernière modification par dylouf (Le 22/12/2009, à 19:55)

Hors ligne

#3 Le 22/12/2009, à 23:16

detoulouse

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

merci !
je me doute bien que le probleme vient des lib...mais alors que je pense avoir installé correctement libgmp.a et libgmpxx.a   je ne la trouve pas dans usr/lib

je sais cest bete,.....quelqu'un peut il tester et me dire ce qui cloche dans ma procedure precedente?

Hors ligne

#4 Le 22/12/2009, à 23:26

dylouf

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

sudo ln -s /usr/local/lib/libgmpxx.so.4 libgmpxx.so.4

Si cette commande a fonctionné, tu dois bien avoir le fichier libgmpxx.so.4 dans /usr/local/lib/ et dans /usr/lib/

Et ç'est celui-là qu'il faut linker ...

Dernière modification par dylouf (Le 22/12/2009, à 23:44)

Hors ligne

#5 Le 22/12/2009, à 23:49

detoulouse

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

encore moi.....JAI REUSSI !!!!
en fait les 2 librairies a linker sont chez moi dans usr/local/lib

les 2 à linker dans l'ordre sont :  libgmpxx.a puis libgmp.a

RESOLU

Hors ligne

#6 Le 22/12/2009, à 23:49

dylouf

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

J'ai trouvé une solution plus simple en y regardant de plus près. En recherchant le paquet de la librairie gmp, j'ai trouvé celui-ci : libgmp3-dev

Je l'es donc installé et en listant /usr/lib/ :

ls -l | grep libgmp
-rw-r--r--  1 root root  1055052 2009-10-22 21:53 libgmp.a
-rw-r--r--  1 root root      922 2009-10-22 21:49 libgmp.la
lrwxrwxrwx  1 root root       15 2009-12-22 22:46 libgmp.so -> libgmp.so.3.5.0
lrwxrwxrwx  1 root root       15 2009-12-10 22:11 libgmp.so.3 -> libgmp.so.3.5.0
-rw-r--r--  1 root root   407872 2009-10-22 21:53 libgmp.so.3.5.0
-rw-r--r--  1 root root    34764 2009-10-22 21:53 libgmpxx.a
-rw-r--r--  1 root root      955 2009-10-22 21:49 libgmpxx.la
lrwxrwxrwx  1 root root       17 2009-12-22 22:46 libgmpxx.so -> libgmpxx.so.4.1.0
lrwxrwxrwx  1 root root       17 2009-12-22 22:46 libgmpxx.so.4 -> libgmpxx.so.4.1.0
-rw-r--r--  1 root root    18776 2009-10-22 21:53 libgmpxx.so.4.1.0

Tes librairies libgmp.a et libgmpxx.a sont bien là, donc tu peux les inclure comme je te le dit dans mon premier post

Dernière modification par dylouf (Le 22/12/2009, à 23:51)

Hors ligne

#7 Le 23/12/2009, à 00:25

detoulouse

Re : UBUNTU 9.10 et programmation en CODE::BLOCKS : RESOLU !!!!!!!!!!!!!!!!

merci dylouf , ton aide  a ete precieuse !!!:lol:

Hors ligne