[RESOLU] Compilation ???

Le langage C permet de créer des programmes rapides et proches de la machine

Modérateur : Francois

Répondre
phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

[RESOLU] Compilation ???

Message par phdenaujan » dim. 18 janv. 2015 11:25

Bonjour,

J'essaye d’utiliser 433Utils pour piloter des Prises de courant.

Il semble que le signal doit être transmis en 32bit, il est donc nécessaire de modifier la script "codesend.cpp" et le recompiler. C'est là que les problèmes commencent en effet je reçois les messages suivant :

/tmp/cccuYMOs.o: dans la fonction « main »:
telec.cpp:(.text+0x34): référence indéfinie vers « wiringPiSetup »
telec.cpp:(.text+0x70): référence indéfinie vers « RCSwitch::RCSwitch() »
telec.cpp:(.text+0x80): référence indéfinie vers « RCSwitch::enableTransmit(int) »
telec.cpp:(.text+0x98): référence indéfinie vers « RCSwitch::send(unsigned long, unsigned int) »
collect2: ld returned 1 exit status

Dans le langage courant ça veut dire : "Marche po !!!"

Ma question : Mais pourquoi :cry: ?
Modifié en dernier par phdenaujan le lun. 13 avr. 2015 13:51, modifié 1 fois.
Ph.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Compilation ???

Message par Veloce » lun. 26 janv. 2015 16:11

Salut,

est-ce que tu as bien installé la bibliothèque WiringPi avant de compiler ton truc ?

Tu la trouveras ici : http://wiringpi.com/download-and-install/

Bon courage

Veloce

phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

Re: Compilation ???

Message par phdenaujan » jeu. 29 janv. 2015 16:45

Bonjour,

Oui, elle est installée. Pour ne pas tourner en rond, je suis passé à autre chose. j'y reviendrai plus tard.

Merci.
Ph.

Avatar du membre
dbrion0606
Raspinaute
Messages : 164
Enregistré le : ven. 30 janv. 2015 15:51

Re: Compilation ???

Message par dbrion0606 » jeu. 26 févr. 2015 15:26

Normalement, votre programme n'a pas de problème de Sainte Axe et n'a "qu"'u,n problème d'edition de liens : vous devriez l'invoquer sous la forme :
g++ <nom_du_programme>.cpp -o <nom_du_programme> -lwiringPi
sinon il connaîtra les structures de wiringPi -il les connaît par un include- mais il ne saura pas où trouver les fonctions correspondantes, générant un message d'erreur cryptique. Peut être en est il de même pour la bibliothèque correspondant à RCSswitch?

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Compilation ???

Message par domi » jeu. 26 févr. 2015 17:42

Bonjour,

J'utilise cette bibliothèque et je n'ai rencontré aucune difficulté particulière.

N'utilisant pas les ports par défaut de la bibliothèque, j'ai modifié les ports wiringpi dans les fichiers "RFSniffer.cpp", "codesend.cpp" et "send.cpp".

Ensuite, il suffit simplement dans lancer la commande

Code : Tout sélectionner

make
La compilation se fait toute seule.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Avatar du membre
dbrion0606
Raspinaute
Messages : 164
Enregistré le : ven. 30 janv. 2015 15:51

Re: Compilation ???

Message par dbrion0606 » ven. 27 févr. 2015 13:41

Bonjour;

une référence indéfinie -chez le posteur- , ça veut dire que la bibliothèque nécessaire n'a pas pu être "linkée" -que ce soit par l'étrange magie d'un Makefile ou par compilation manuelle; ceci peut être dû à

a)un makefile mal écrit (très improbable) ou une invocation manuelle incomplète de gcc/g++ ==> dans les deux cas, savoir comment gcc/g++ a été invoqué est nécessaire (les Makefile -s affichent souvent cette invocation, en sus de messages d'erreur cryptiques).

b) le fait que la bibliothèque nécessaire -en l'occurrence wiringPi - ne soit pas dans un emplacement standard (oubli de sudo make install?) Savoir où est libwiringPi.{so,a} **chez le posteur ** est une question légitime (la question de l'existence est résolue par le fait que les header files sont à la bonne place -sinon, la compilation se serait arrêtée bien avant- : mais de fausses manoeuvres étranges sont possibles ou une problème pour certaines versions, et peut être que le posteur serait heureux que les conséquences en soient réduites).

Chez moi, elle est dans un emplacement standard, ce que j'ai pu vérifier -peut être que ça devrait être la première chose à faire - :

*******************************************
pi@raspberrypi ~/wiringPi $ ls -lrt /usr/lib/libwi*
-rw-r--r-- 1 root root 1004268 mai 2 2012 /usr/lib/libwibble.a #sans objet
lrwxrwxrwx 1 root root 34 f�vr. 27 12:17 /usr/lib/libwiringPi.so -> /usr/local/lib/libwiringPi.so.2.25 # celle dont on a besoin
lrwxrwxrwx 1 root root 37 f�vr. 27 12:17 /usr/lib/libwiringPiDev.so -> /usr/local/lib/libwiringPiDev.so.2.25
**********************************

Edité : naturellement, même si la compilation marche "chez moi", je n'enverrai pas par la poste mon RPi .... chercher des explications à un éventuel dysfonctionnement me semble plus légitime et à terme, moins oiseux.

phdenaujan
Messages : 63
Enregistré le : lun. 5 janv. 2015 21:29

Re: Compilation ???

Message par phdenaujan » lun. 13 avr. 2015 13:51

Merci de votre aide.

Ça fonctionne aujourd'hui parfaitement avec une réinstall de l'ensemble des librairies dans "pi".

Cordialement
Ph.

Répondre

Retourner vers « C / C++ »