2017-04-14 1 views
0

Je tente de compiler une application GtkAda très simple en ligne de commande, sous Windows. Voici le code de l'application:Comment utiliser GtkAda en ligne de commande?

`WITH Gtk.Main ;  USE Gtk.Main ; 
WITH Gtk.Window ;  USE Gtk.Window ; 
PROCEDURE Test01 IS 
    win : Gtk_window ; 
BEGIN 
    Init ; 
    Gtk_New(Win) ; 
    Win.show_all ; 
    Main ; 
END Test01 ;` 

Compiler avec

gcc -c test01.adb -IC:\<<path_to_GtkAda\include\gtkada>>, -je obtenir test.ali et test01.o comme prévu.

Mais comment lier les libs s'il vous plaît?

gcc test.o -LC:\<<path_to_GtkAda>>\lib 

donne:

`Test01.o:Test01.adb:(.text+0xe): undefined reference to `gtk__main__init' 
Test01.o:Test01.adb:(.text+0x21): undefined reference to `gtk__window__gtk_new' 
Test01.o:Test01.adb:(.text+0x3e): undefined reference to `__gnat_rcheck_CE_Access_Check' 
Test01.o:Test01.adb:(.text+0x5e): undefined reference to `gtk__main__main' 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: Test01.o: bad reloc address 0x20 in section `.eh_f 
rame' 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation 
collect2.exe: error: ld returned 1 exit status` 

PATH contient déjà <<path_to_GtkAda>>/bin

Merci.

Répondre

3

La solution est généralement d'utiliser les fichiers de projet de GNAT comme décrit dans la documentation installée avec le compilateur, généralement dans le « doc » ou "doc/gprbuild » sous-répertoire.

Un exemple simple fichier projet nommé « SO.gpr » pourrait ressembler à ceci:

with "gtkada"; 
project SO is 

for Source_Dirs use ("."); 

end SO; 

Notez la partie qui dit with "gtkada"; Cela signifie que la chaîne d'outils injectera alors tous les commutateurs nécessaires pour créer un programme Ada/GTK. Ensuite, si vous invoquez la toolchain comme GNAT ceci:

$ gnatmake -PSO test01.adb 

Ada faire appel programme, dans l'ordre, gcc, gnatbind et gnatlink. Pour chacun, les arguments nécessaires aux commandes seront fournis automatiquement. (. Selon l'édition de GNAT que vous utilisez, vous pouvez également utiliser gprbuild)

Ainsi, par exemple sur un système Debian/GNU avec libgtkada2.24.4-dev installé, je vois ceci:

$ gnatmake -Pso test01.adb 
gcc-4.9 -c -I- -gnatA /home/bauhaus/News/SO/test01.adb 
gnatbind -shared -x /home/bauhaus/News/SO/test01.ali 
gnatlink /home/bauhaus/News/SO/test01.ali -shared-libgcc -L/usr/lib/x86_64-linux-gnu/ -lgtkada -lgdk-x11-2.0 -lgmodule-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lfontconfig -lfreetype -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lX11 -lm -o /home/bauhaus/News/SO/test01 
$ 
+0

Merci beaucoup pour votre réponse! :-) +1 Je vais essayer ça! –