Salut à tous
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
Merci d’avance
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
je reposterai ce soir car je pense avoir un autre soucis mais ca va peut-être fonctionner maintenant
merci bcp
Apparament il ne trouve pas encore la librairie
Je ne comprends pas … j’essais sur ma machine avec g++ pour arm et il ne le trouve pas non plus
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
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é
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 çà
Si çà marche je vais avoir l’air con
Meric beaucoup
Bon avec cette ligne sur ma machine en cross compil çà passe je transferts le fichier même erreur
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 …
Très étrange
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
Salut
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
Quelle énigme !
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
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é !
( fichier de config du compilateur sous windows apparament )
et je viens de voir effectivement que le fichier contenant le main n’est pas compilé
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 !