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 24/01/2013, à 09:32

MacArony

K8055 - Board de développement Velleman

Bonjour, j'utilise Code Blocks avec ubuntu 12.04. Je tente désespérément de programmer la board. J'ai bien suivis le tutoriel d'installation sur la doc.ubu/k8055 et le programme de test fournis avec la lib fonctionne correctement, mais dès que je passe avec Code Blocks c'est le drame ! Une erreur sauvage apparaît mad :

/usr/local/lib/libk8055.so||undefined reference to `sqrtf'|

Pourriez-vous m'aider ? Merci d'avance.

Edit : Je précise que j'ai bien googlé comme il faut, même sur des sites anglophones cool Mais le soucis c'est que il faut que je foute «-lm» dans la ligne de compilation mais je préférerai utiliser Code::Blocks quoi ! C'est normal, le GUI c'est juste fantastique ;-)

Dernière modification par MacArony (Le 24/01/2013, à 09:35)


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#2 Le 24/01/2013, à 09:53

telliam

Re : K8055 - Board de développement Velleman

je vois pas le lien entre code::Blocks et le -lm, pour résoudre cette irrésolu, il faut effectivement que tu linkes avec la lib math.
dans code::blocks tu dois surement avoir qq part un endroit ou tu px indiquer les librairies dynamiques que tu vx utiliser.
ca doit ressembler a un truc de ce genre :
http://stackoverflow.com/questions/5862 … codeblocks


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 24/01/2013, à 09:54

claudius01

Re : K8055 - Board de développement Velleman

Bonjour MacArony,

Je te propose d'ajouter à l'édition de lien l'option suivante (si cela n'est pas déjà fait)

-lm

cf. undefined reference to sqrtf qui ressemble à ton problème


Cordialement, A+
--
Claudius

Hors ligne

#4 Le 24/01/2013, à 10:25

MacArony

Re : K8055 - Board de développement Velleman

Aaaaaah mais justement CCM c’était le premier résultat et il ne résout pas plus le problème. Et puis j'ai un peu cherché quand même.
Peut-être alors que je n'ai pas la bonne bibliothèque ?

#include <string.h>
#include <stdio.h>
#include <usb.h>
#include <assert.h>
#include <sys/time.h>
#include <math.h>
#include "k8055.h"

#define STR_BUFF 256
#define false 0
#define true 1

int main()
{
    printf("Hello world!\n");
    WriteAllDigital(12);
    return 0;
}

Voilà le code source du main.c pour allumer les diodes 3 et 4 par exemple en plus du hello dans le terminal.

Dernière modification par MacArony (Le 24/01/2013, à 10:32)


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#5 Le 24/01/2013, à 10:52

MacArony

Re : K8055 - Board de développement Velleman

telliam a écrit :

je vois pas le lien entre code::Blocks et le -lm, pour résoudre cette irrésolu, il faut effectivement que tu linkes avec la lib math.
dans code::blocks tu dois surement avoir qq part un endroit ou tu px indiquer les librairies dynamiques que tu vx utiliser.
ca doit ressembler a un truc de ce genre :
http://stackoverflow.com/questions/5862 … codeblocks

C'est déjà le cas.


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#6 Le 24/01/2013, à 11:40

telliam

Re : K8055 - Board de développement Velleman

tu l'as bien mis en premier?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#7 Le 24/01/2013, à 11:43

telliam

Re : K8055 - Board de développement Velleman

c'est une carte qui nécessite un compilo croisé ou pas?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#8 Le 24/01/2013, à 11:50

MacArony

Re : K8055 - Board de développement Velleman

ah non pas de cross-compilo vu que c'est juste une «extension» et le programme s’exécute sur le pc.
Et oui il est en premier (deuxième ou troisième c'est la même chose.)


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#9 Le 24/01/2013, à 12:00

telliam

Re : K8055 - Board de développement Velleman

est ce que tu passes des options de compilation ou linker particulieres?
px tu mettre le log de compilation?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#10 Le 24/01/2013, à 13:35

MacArony

Re : K8055 - Board de développement Velleman

-------------- Build: Debug in vellman_test ---------------

Linking console executable: bin/Debug/vellman_test
/usr/local/lib/libk8055.so: undefined reference to `sqrtf'
collect2: ld a retourné 1 code d'état d'exécution
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
 

Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#11 Le 24/01/2013, à 13:41

telliam

Re : K8055 - Board de développement Velleman

tu as pas moyen d'afficher la ligne de compilation?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#12 Le 24/01/2013, à 13:57

MacArony

Re : K8055 - Board de développement Velleman

J'ai trouvé commentl'afficher :

-------------- Build: Debug in vellman ---------------

[ 50,0%] gcc -Wall  -g     -c /home/macarony/Projet_codeblocks/vellman/main.c -o obj/Debug/main.o
[100,0%] g++  -o bin/Debug/vellman obj/Debug/main.o    -lm -lk8055 -lusb 
/usr/local/lib/libk8055.so: undefined reference to `sqrtf'
collect2: ld a retourné 1 code d'état d'exécution
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
 

Dernière modification par MacArony (Le 24/01/2013, à 13:58)


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#13 Le 24/01/2013, à 14:14

claudius01

Re : K8055 - Board de développement Velleman

Re MacArony et mille excuses pour ma 1ère réponse ;-)

Que donne le résultat de la commande :

$ ldd /usr/local/lib/libk8055.so

Cordialement, A+
--
Claudius

Hors ligne

#14 Le 24/01/2013, à 14:23

telliam

Re : K8055 - Board de développement Velleman

pquoi tu utilises g++ pour linker et pas gcc?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#15 Le 24/01/2013, à 14:58

MacArony

Re : K8055 - Board de développement Velleman

claudius01 a écrit :

Re MacArony et mille excuses pour ma 1ère réponse ;-)

Que donne le résultat de la commande :

$ ldd /usr/local/lib/libk8055.so

Cordialement, A+
--
Claudius

Pas de soucis ;-)
voila le retour :

linux-gate.so.1 =>  (0xb77d7000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb760d000)
	/lib/ld-linux.so.2 (0xb77d8000)

Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#16 Le 24/01/2013, à 15:02

MacArony

Re : K8055 - Board de développement Velleman

telliam a écrit :

pquoi tu utilises g++ pour linker et pas gcc?

Dans la config j'ai bien gcc pour le C et g++ pour le C++

Je rappelle que la compilation en ligne de commande fonctionne quand on génère le binaire de test (cf la doc) or en codant sur codeblocks j'ai cette erreur.


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#17 Le 24/01/2013, à 15:53

telliam

Re : K8055 - Board de développement Velleman

je commence a me souvenir pourquoi je déteste codeblocks;)
regarde la config pour le linker, il y a peut etre un config différente


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#18 Le 24/01/2013, à 15:58

MacArony

Re : K8055 - Board de développement Velleman

J'ai pas compris : la config pour le linker.

Bin je vois pas pourquoi on devrait le détester, c'est trés bien, surtout que sinon c'est WIndowsXP avec C++ builder 5 or vu que je débute autant commencer sur un outil libre et surtout convivial.

Dernière modification par MacArony (Le 24/01/2013, à 16:01)


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#19 Le 24/01/2013, à 16:59

claudius01

Re : K8055 - Board de développement Velleman

Re,

MacArony a écrit :

Je rappelle que la compilation en ligne de commande fonctionne quand on génère le binaire de test (cf la doc) or en codant sur codeblocks j'ai cette erreur.

Il faut donc trouver quelle lib (dynamique ou statique) "tire" la méthode 'sqrtf' lorsque l'environnement "codeblocks" est utilisé...

Utiliser pour cela la commande 'nm'

$ nm <fichier_lib> | egrep sqrtf

sur toutes les lib sensée être utilisées en commençant par 'libk8055.so', même si je pense qu'elle n'est pas concernée (à confirmer/infirmer)


Cordialement, A+
--
Claudius

Dernière modification par claudius01 (Le 24/01/2013, à 20:37)

Hors ligne

#20 Le 24/01/2013, à 17:30

telliam

Re : K8055 - Board de développement Velleman

vu la trace d'erreur du linker : il y a des chances que l'irresolu soit dans libk8055.so. mais effectivement ça fait pas de mal de vérifier avec nm
la libk8055.so vient d'un package ou tu l'as compilé toi meme ?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#21 Le 24/01/2013, à 22:27

MacArony

Re : K8055 - Board de développement Velleman

J'ai ceci !

nm "/usr/local/lib/libk8055.so" | egrep sqrtf
         U sqrtf

À quoi correspong le "U sqrtf" ? Je sais pas...


Linux was fast enough on this machine. But in street racing parlance, with PC-BSD I’m burning rubber in all four gears.
Lenovo Yoga L380 : Elementary 7.0
HP Proliant N54L : OpenMediaVault 6
Apple Mac Mini 2009 : Catalina

Hors ligne

#22 Le 24/01/2013, à 22:29

telliam

Re : K8055 - Board de développement Velleman

ca veut dire unresolved, ça confirme bien que le symbole est irrésolu dans la lib k8055.so
peux tu faire la meme manip sur libm.so ?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#23 Le 24/01/2013, à 23:13

claudius01

Re : K8055 - Board de développement Velleman

Bingo,

- C'est donc bien '/usr/local/lib/libk8055.so' (autant pour moi ;-) qui a besoin de la méthode 'sqrtf()' qui normalement est fourni par 'libm.so' (à confirmer)
- Maintenant si l'édition de lien fonctionne lorsque "...en ligne de commande fonctionne quand on génère le binaire de test... " et que donc l'option "-lm" est indispensable pour que cette lib 'libm.so' (à localiser) soit prise en compte, c'est peut être l'ordre de déclaration des options du link dans la commande générée par 'codeblocks' qui est à revoir; à savoir :

g++  -o  bin/Debug/vellman    obj/Debug/main.o    -lm    -lk8055   -lusb

Essayer, si c'est possible, de mettre '-lm' derrièrre '-lk8055' :

g++  -o  bin/Debug/vellman    obj/Debug/main.o    -lk8055  -lm   -lusb

Cela ne coûte rien et peut rapporter gros...


Cordialement, A+
--
Claudius

Dernière modification par claudius01 (Le 24/01/2013, à 23:18)

Hors ligne