[G++] inclure un repertoire pour une librairie - --with-zlib-config=/

Salut à tous :slight_smile:

J’ai un petit soucis … j’essais de compiler une application dans un serveur linksys qui possède ses librairies dans le dossier /opt/lib contrairement à /usr/lib apparament pour une libraire Zlib !

Donc voila je cherche à savoir si on sait faire un include avec g++ comme avec un make normal … voici la ligne qui compile le programme :

clear
g++ -DNDEBUG -I ../misc -I . -O3 -lz -o xbt_client_backend *.cpp ../misc/*.cpp && strip xbt_client_backend

Donc avant de passer 3 heures a compiler avant d’avoir un message d’erreur je préfèrerais être sûr :stuck_out_tongue:

Merci d’avance :smiley:

Il faut passer l’option

-L /opt/lib

Mais si le répertoire de la bibliothèque est déclarée dans ton /etc/ld.so.conf ça ne posera aucun probllème si ça n’y est pas.

Ca semble fonctionner merci :slight_smile:

je reposterai ce soir car je pense avoir un autre soucis mais ca va peut-être fonctionner maintenant :wink:

merci bcp

ok :wink:

Apparament il ne trouve pas encore la librairie :frowning:

Je ne comprends pas … j’essais sur ma machine avec g++ pour arm et il ne le trouve pas non plus :confused:

pourtant :


lrwxrwxrwx   1 tux users      13 Oct 28 20:48 libz.so -> libz.so.1.2.2
lrwxrwxrwx   1 tux users      13 Oct 28 20:48 libz.so.1 -> libz.so.1.2.2
-rw-r--r--   1 tux users   64548 Sep  3 05:46 libz.so.1.2.2

./misc/xif_key.cpp:246: error: `compress' undeclared (first use this function)
../misc/xif_key_r.cpp:4:18: zlib.h: No such file or directory
../misc/xif_key_r.cpp: In member function `int
   Cxif_key_r::import(Cvirtual_binary)':
../misc/xif_key_r.cpp:26: error: `Z_OK' undeclared (first use this function)
../misc/xif_key_r.cpp:26: error: (Each undeclared identifier is reported only
   once for each function it appears in.)
../misc/xif_key_r.cpp:26: error: `uncompress' undeclared (first use this
   function)
../misc/xif_value.cpp:4:18: zlib.h: No such file or directory

clear
/home/tux/unslung/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/bin/armv5b-softfloat-linux-g++ -L /opt/lib/ -DNDEBUG  -I ../misc -I . -O3 -lz -o xbt_client_backend *.cpp ../misc/*.cpp && strip xbt_client_backend

Quelque chose m’échappe sérieusement :neutre:

Tu as bien la lib (binaire) mais pas les devel (include) qui définisent les différents prototypes, structures etc …

Salut KarLKoX :slight_smile:

Je vais refaire le point. En fait j’ai en compilant la librairie zlib pour mon routeur ceci:

/opt/include/zlib.h,zlib.conf
/opt/lib/libz.so,libz.so.1,libz.so.1.2.2

Donc je pense que tout y est mais quand je lui passe le paramètre -L /opt ou -L /opt/lib ou encore /opt/include j’ai différent type d’erreur :neutre:

collect2: ld returned 1 exit status OU Lz erreur …

Le seul moyen qui fonctionne est de mettre dans les fichiers nécessitant zlib.h :

#include "/opt/include/zlib.h"

résultat lorsque çà veut bien compilé :


./xbt_client_backend: error while loading shared libraries: libz.so: cannot open shared object file: No such file or directory

Franchement je pense avoir tout essayé au niveau include j’ai posté un request sur le forum pour avoir un ./configure normal pour l’application, j’ai regardé de mon coté pour le créer mais c’est assé compliqué :frowning:

Voila l’url du programme que j’essais de compiler :

http://www.qwikster.org/index.php?title=Ex…ing_under_Linux

C’est un client bittorent avec interface web qui est vraiment très bien fait je trouve !

Voila si quelqu’un a une idée lumineuse je suis preneur car je suis vraiment désespéré.

-L : ce sont pour définir des dossier pour les librairies (.so),
-I : pour ajouter les include

Donc il faudra que tu ajoute le dossier des includes de la Zlib (-I/opt/include) et de la lib compilée (-L/opt/lib).

ahhhhh pas con çà :slight_smile:

Si çà marche je vais avoir l’air con :smiley:

Meric beaucoup :stuck_out_tongue:

Bon avec cette ligne sur ma machine en cross compil çà passe je transferts le fichier même erreur :confused:

J’ai compilé dans le routeur et arrivé au zlib.h des pages A4 d’erreurs :

/tmp/ccdVOok4.o(.text+0x1c0):scheduler.cpp: undefined reference to `Cxif_value
::get_type() const'
/tmp/ccdVOok4.o(.text+0x1d0):scheduler.cpp: undefined reference to `Cxif_value
::get_type() const'
/tmp/ccdVOok4.o(.text+0x1ec):scheduler.cpp: undefined reference to `Cvirtual_b
inary::Cvirtual_binary[in-charge]()'
/tmp/ccdVOok4.o(.text+0x3e8): In function `Cscheduler_entry::save() const':
scheduler.cpp: undefined reference to `Cvirtual_binary::Cvirtual_binary[in-cha
rge]()'

erreur bizarre … :confused:

Très étrange :frowning:

Bon je me suis lancé dans l’aventure de créer un ./configure :bounce:

Bon pour le moment çà semble bien parti, çà compile c’est déjà çà.

Par contre :

/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/../../../crt1.o(.text+0x18): In function `_start':
: undefined reference to `main'

:ane: si je trouve je reposterai merci pour votre aide en tout cas on en apprend tous les jours :wink:

Salut :slight_smile:
Je vois que tu as pas mal avancé, pour ton problème d’erreur de main, il semble que le point d’entrée main n’existe pas (il faut toujours une fonction main), apparamment _start doit surement faire office de point d’entrée, renommer cette fonction en main pourrait aider mais attention, vérifie bien qu’il s’agit du main renommé.

J’ai trouvé ceci :

http://dev.mysql.com/doc/refman/5.0/fr/link-errors.html

apparament un problème de librairie la fonction main est bien présente dans le fichier BT Test.cpp :confused:

Quelle énigme ! :smiley:

Est ce que les commandes qu’il te manque font partie
1/ D’une bibliothèque
2/ De l’application ?

Commandes ? Je suppose que tu veux parler de la dernière erreur du configure ?

Je ne sais pas je n’ai pas encore trouvé ce que signifie cette erreur :confused:

Ca semble être un problème de librairie si j’en crois la doc de mysql.

mcfly.587: ok
Je viens de comprendre ce que tu as fait.

Tu as une fonction main quelque part?
si oui, il y a un problème dans l’ordre de compilation et de link

si oui, il y a un problème dans l'ordre de compilation et de link

Le problème est que je dois spécifier les fichiers a compiler mais l’ordre je ne le connais pas !

Il faudrait que je puisse voir comment g++ travaille je vais chercher le paramètre qui permet d’afficher ce qu’il compile .

Bon je progresse je viens de trouver un fichier ou l’ordre de compilation est indiqué ! :slight_smile:
( fichier de config du compilateur sous windows apparament )

et je viens de voir effectivement que le fichier contenant le main n’est pas compilé :clap:

Voila le configure et le make fonctionne ! :sol: j’ai du renommer un fichier avec un espace qu’il refusait de compiler même avec des " " évidement c’était le fichier main :paf:

Bon plus qu’a croiser les doights pour le cross compil !

Merci encore pour votre aide :stuck_out_tongue: !