Newsgroup: it.comp.lang.c++
Titolo: linkare staticamente

ciao a tutti, non ho esperienza riguardo i compilatori, ho sempre usato gcc
con code blocks sotto windows.
vorrei rendere i miei programmi fatti con gtk2 compatibili anche in altri pc
senza gtk. come devo fare per linkare staticamente le librerie che uso?
grazie mille
ciao

Foley ha scritto:

non tutte le librerie possono essere linkate staticamente, le gtk sono
fatte per essere linkate dinamicamente.

 ha scritto nel messaggio 
news:BA7Nm.95936$1s6....@twister2.libero.it...

grazie mille, ma non esiste altro modo per poter rendere compatibile un 
eseguibile, che ha bisogno delle gtk, in altri computer? ovviamente senza 
instalare il kit gtk su altri computer.
grazie mille
ciao 

 
no mi spiace, inoltre l'eseguibile sarebbe enorme visto che glib, gdk,
pango, etc... gtk con le relative dipendenze ï¿œ una decina di mega.
Se hai l'esigenza di distribuire un eseguibile piccolo e statico
utilizza una libreria come fltk oppure direttamente le api native di
windows.
Altrimenti devi fare come gimp distribuisci un pacchetto eseguibile che
installa le librerie gtk e uno che installa il tuo software, non ci sono
molte alternative.

 molte alternative.
ok, provo a vedere fltk, pero continuo a non capire quale settaggio devo 
fare per dire a gcc tramite code blocks che lo voglio statico. ho letto che 
con fltk linka automaticamente in maniera statica, confermi?
inoltre vorrei chiederti se fltk si puo usare anche con il c, in rete ho 
trovato solo per il c++.
grazie ancora
ciao ciao

 
fltk non ha binding per il C mi spiace, devi usare per forza il C++.
(non che sia un male pensa solo a stringhe a template)
Il tamplate di codeblocks per fltk fa giï¿œ la compilazione statica quindi
stai tranquillo.
Ma se vuoi usare le gtk non puoi utilizzare un pacchetto che fa
l'installer e installa pure le dll di gtk e buona notte?

 l'installer e installa pure le dll di gtk e buona notte?
direi di si, solo che � la prima volta che programmo usando librerie diverse 
dalle standard, e sono un po sperduto. come si fa per creare un pacchetto di 
installazione? ora cerco un po su google, se hai della documentazione a 
riguardo fammi sapere.
scusate se ho postato qui e ora sono un po OT riguardo il c...grazie ancora 
ciao 

 
mah sinceramente il modo piï¿œ semplice sotto windows ï¿œ:
* fai una directory
* ci butti il tuo .exe
* ci butti le dll che necessitano all'applicativo
* prendi il winrar e ci fai un archivio autoextraente :) mi pare di
ricordare che ci sia pure la possibilitï¿œ quando scompatta di creare un
link sul desktop ad un eseguibile.
oppure al posto del winrar utilizzi un creatore di setup tipo quello di
nullsoft (tanto per restare nell'opensource)
http://nsis.sourceforge.net/Main_Page

 
http://nsis.sourceforge.net/Main_Page
perfetto, non pensavo fosse tanto semplice. non so perche ma pensavo di 
dover scrivere del codice extra per farlo. comunque su google ho trovato 
parecchi software e modalita. grazie mille.
approfitto della tua pazienza ancora un po :-)
allora ho un paio di dubbi sulle librerie.
il mio codice inizia con
#include <gtk/gtk.h> questo vuol dire che gli devo allegare tutte le 
librerie del toolkit o allego solo quelle che effettivamente 
uso(glib,gobject e gtk-win32)?
nella directory dove ho installato gtk, non ho dll, ho solo file *.lib e *.a
quali devo allegare all'eseguibile? inoltre le librerie devo farle estrarre 
in un percorso specifico?
fammi sapere ciao

 
no...
usi un tools come dependency walker che aperto un eseguibile di dice a
quali librerie dinamiche ï¿œ linkato e aggiungi quelle dll
http://www.dependencywalker.com/
micheg
non te la prendere comunque alle volte il deploy ï¿œ una parte complessa..