Bonjour,
Je travaille actuellement sur un projet consistant à réaliser le portage d'une librarie graphique (MiniGUI) sur le système d'exploitation embarqué eCos
Voici déjà leur site respectifs :
www.ecos.sourceware.org
www.minigui.com
J'ai donc réalisé tout le processus de configuration et de compilation de eCos, et de miniGUI.
Je souhaite maintenant réaliser un programme (helloworld) graphique.
J'ai réalisé plusieurs tests :
- helloworld graphique sous linux (avec minigui)
- helloworld (mode texte) sur ecos.
Mon problème n'est pas lié à l'exotisme de mon système d'exploitation, mais plutôt à un problème de compilation (et surtout link) de mon progrmame helloworld pour eCos qui fait intervenir miniGUI.
Voici la commande utilisée pour la compilation :
i386-elf-gcc -g -Wall -D_ECOS -I ../ecos-pc/install/include -I /usr/local/include/ -c helloworld.c -L /opt/ecos/ecos-2.0/work/ecos-pc/install/lib -Ttarget.ld -nostdlib
et la commande utilisée pour le link :
1 2
|
ld -o a.out /usr/local/lib/libminigui.so helloworld.o -lminigui -lc |
Le problème est simple, puisque lors du link, j'ai une série d'erreurs : "undefined reference" pour chaque appel de fonction de miniGUI, fonctions définies dans les headers et dans le fichier libminigui.so.
En effet, lorsque je recherche les noms de fonctions non définies avec un petit grep, je constate qu'il y a bien concordance. La preuve en image.
1 2 3
|
ld: AVERTISSEMENT: ne peut trouver le symbole d'entrée _start; utilise par défaut 0000000008048784
/usr/local/lib/libminigui.so: référence indéfinie vers « png_set_gray_1_2_4_to_8 » |
1 2 3 4 5 6
|
debian:/opt/ecos/ecos-2.0/work/app/minigui# grep -r png_set_gray_1_2_4_to_8 /usr/local
Fichier binaire /usr/local/lib/libminigui-1.6.so.2.0.0 concorde
Fichier binaire /usr/local/lib/libminigui-1.6.so.2 concorde
Fichier binaire /usr/local/lib/libminigui.so concorde
Fichier binaire /usr/local/lib/libminigui.a concorde |
Quelqu'un a t'il qq hypothèses sur la question ?
Est ce que le warning lors du link a une réelle importance ?
Est-ce qu'une solution au problème pourrait être de linker en statique ?
Si je suis pas clair, et pour plus d'infos, n'hésitez pas à me poser vos questions. Merci
Partager