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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 »
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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