PDA

View Full Version : Oggi ho fatto il mio primo esperimento di compilazione...ma cosa è successo?


barzi
31-03-2007, 11:50
Ciao a dotos...
Dopo aver installato XCode (mi mancava) oggi ho scaricato il mio primo sorgente e l'ho compilato. Si tratta dello stranoto VNC. Nel file .gz ci sono diversi files. Lo scompatto tramite tar xvcf nella mia home dir.Vedo che ci sono diversi files .h e .c quindi a naso penso che devo usare il compilatore gcc. Leggo il readme e recita:

***************************************************************
..............
There are six programs here:

vncviewer - this is the VNC viewer, or client, program for X.

Xvnc - this is the X VNC server - it is both a VNC server and an X server
with a "virtual" framebuffer. You normally use the vncserver script
to start Xvnc.

vncserver - this is a wrapper script which makes starting an X VNC server
(i.e. desktop) more convenient. It is written in Perl, so to use
the script you need that.

vncpasswd - this program allows you to change the password used to access
your X VNC desktops. The vncserver script uses this program when
you first start a VNC server.

vncconfig - this program is used to configure and control a running instance
of Xvnc.

x0vncserver - this is an inefficient VNC server which continuously polls any
X display, allowing it to be controlled via VNC. It is
intended mainly as a demonstration of a simple VNC server
...............
**************************************************************

Bene... a me interessa solo il vncviewer. Come faccio a installare solo quello?Io ho seguito questa cosa qua:

************************************************************
...................
To build everything but Xvnc, do:

% ./configure
% make

This should build first some libraries - zlib, rdr, network, Xregion, rfb and
tx - then vncviewer, vncconfig and vncpasswd. If you already have zlib
installed on your system you can run "./configure --with-installed-zlib" if you
prefer (this is strongly advised on FreeBSD, since we've been told there are
problems otherwise).
..............
**************************************************************

In questo modo mi installa tutto tranne Xvnc... la curiosità è però troppa e allora eseguo il ./configure seguito dal make.
Inizia a fare le sue burocrazie (a proposito... cosa accade di preciso in questa fase???). A questo punto seguo l'istruzione di installazione riportata sul Readme a corredo:

**************************************************************
.....
This will also attempt to install the manual pages in an appropriate directory.
You can specify an alternative directory as a second argument to vncinstall:

% ./vncinstall /usr/local/bin /usr/local/man

.....
*************************************************************

Lancio il comando ./vcinstall /Applications. Mi ritrovo 5 files eseguibili nella cartella Applicazioni. Controllo con il comando file che tipo di file è. Si tratta di un Mach 0-Executable PPC file. Bene. Copio solo il file vncviewer nella cartella /usr/bin (entro in mod sudo). Gli altri li rimuovo con il comando rm. Il sistema mi chiede se voglio fare qualcosa come un overriding (che roba è??). Rispondo di si e sti altri files vengono cancellati. Bene... è tutto pronto!!! Lancio il comando vncviewer e NADA!!!! Ma ovvio!!! Devo lanciarlo dala finestra X11!!! E infatti ha funzionato (anche se l'interfaccia è davvero davvero vintage!!!!).
Le mie domande,oltre a quelle fatte tra le righe sono:
1) E' corretto il fatto che io abbia cancellato con rm gli altri eseguibili?? Non rimangono files in giro per l'HD?
2) E' corretto ciò che ho fatto?Controindicazioni?
3) Qualcuno mi spiega passo-passo cosa è accaduto durante tutto questo processo?Come ha reagito il sistema?Cosa ha fatto??

Thanx!! :)

Massimo87
31-03-2007, 12:41
ma scusa.. VNCViewer c'è già compilato per Mac OSX :D

allura..
con il comando ./configure, hai creato dei file che permettono di far capire al compilatore se hai presente nel tuo pc tutte le librerie necessarie per compilare il programma (inoltre puoi costumizzare i vari file appendendo degli switch al comando, per vederli di basta fare ./configure --help).. mentre con il comando "make" non fai altro che far partire realmente la compilazione del programma stesso :)

gli eseguibili che hai cancellato erano sicuramente quelli contentuti nell'introduzione, quindi il viewer, il server, il vncpasswd e lo x0vncserver
dato che a te serviva solo il viewer, non era necessario tenere gli altri :)

barzi
31-03-2007, 13:10
Bene... quindi ho fatto bene a cancellare quegli eseguibili vero?
Il comando ./configure è valido sempre o solo in questo caso?
E i files che ha creato ./configure dove sono ora?Devo cancellarli?Di norma quindi c'è sempre un'operazione di configure seguita da una di make?L'eseguibile viene creato automaticamente alla fine della compilazione?

già che ci sono ne approfitto :D
Sto installando ELM, un client di posta elettronica via terminale reperibile a questo indirizzo http://instinct.org/elm/
sto provando ad installarlo ma dice che nn trova le librerie C. Da premettere che ho installato XCode proprio ieri sera (ho scaricato la versione dell'ultimo grido direttamente dal sito apple). Dove diamine sono ste librerie?

P.s.
miiii quante domande!!! :mbe:
P.p.s.
W Unix!! :sofico:

Massimo87
31-03-2007, 13:41
gli eseugibili, come ti ho già detto, erano sicuramente gli altri componenti del pacchetto :)

Il comando ./configure (o in alcuni casi ./config) si usa quasi sempre nella compilazioni di programmi Unix, capita alcune volte che basti solo il "make", ma questo dipende anche dal pacchetto che si vuole compilare. I file creati dal ./configure risiedono nella cartella del programma e non sono sparsi nel sistema, quindi vai tranquillo ;)

Per gli errori con ELM, forse è meglio che riporto l'errore.. altrimenti è un pò difficile risolverlo :Prrr:

P.s.: tieni presente, che i sorgenti da compilare per Linux, non è detto che funzionino su MacOSX!

barzi
31-03-2007, 13:47
Il sorgente non è Linux ma è prettamente Unix (non sono certo però se sia BSD o System V o se in questo caso è la stessa cosa...)
Cmq ecco il punto critico:

Checking for optional libraries...
No -lintl.
No -lnls.

Some versions of UNIX support shared libraries, which make
executables smaller but make load time slightly longer.

On some systems, mostly newer UNIX System V's, the shared library
is included by putting the option "-lc_s" as the last thing on the
cc command line when linking. Other systems use shared libraries
by default. There may be other libraries needed to compile elm2.5
on your machine as well. If your system needs the "-lc_s" option,
include it here. Include any other special libraries here as well.
Say "none" for none.

Any additional libraries? [none]


I can't seem to find your C library. I've looked in the following places:

/usr/lib /usr/ccs/lib /usr/local/lib /usr/lib/large /lib /usr/lib/386 /lib/386 /lib /lib/large /usr/lib/small /lib/small

None of these seems to contain your C library. What is the full name
of your C library?

Extracting names from None for later perusal...
nm didn't seem to work right.
Trying ar instead...
ar: None: No such file or directory
ar didn't seem to work right.
Maybe this is a Cray...trying bld instead...
./Configure: line 2158: t: command not found
bld didn't seem to work right either. Desperation time.
We'll use strings and hope this returns something useful.
strings: can't open file: None (No such file or directory)
That didn't work either. Giving up.


Presumibilmente devo dargli il percorso della mia libreria C... ma che ne so dove sta?!??!!?
Magari prova anche te a installarlo,in effetti chiede diverse cose oltre a ciò (ad esempio sul tipo di compilatore ecc). Potresti darmi una mano e magari insegnarmi qlcs!! :fagiano:

Massimo87
31-03-2007, 13:49
sto ELM non lo trovo ne su Fink ne su Port.. :mbe:
scarico il sorgente e vedo che dice va..

barzi
31-03-2007, 13:51
Ok... Fammi sapere cosa ti dice!!! :D

barzi
01-04-2007, 11:58
Trovato?? :D
Ecco il link per il download : http://instinct.org/elm/#download

barzi
07-04-2007, 10:31
Bene....
Sono riuscito ad andare avanti.... anche se poi mi dava una serie di errori del tipo "cannot find aaaaa()", "cannot find xyz()" (quindi nn trova dei metodi specifici...credo).

La libreria C... ne ho trovate diverse.Ecco i percorsi:

/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1

/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/darwin/3.3

/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.0

...E via discorrendo. Dandogli uno qualsiasi di questi percorsi non mi dice piu "Cannot find C library. Give Up" ma va avanti.Poi però mi dice che nn trova i metodi necessari. Mi sono un po documentato e di solito sui sistemi *nix con GCC la libreria C si chiama libc.a. Su Darwin invece ho trovato libcc_kext.a oppure libcc.dylib. Qualcuno mi fa un po di chiarezza su questi files? Ad esempio che diff c'è tra *.dylib e *.a?Oppure percheho tutti questi percorsi in cui ci sono tutte ste librerie?Perche si chiamano libcc invece che libc (ovvero con una sola C)?Cosa significa KEXT?
Da premettere che il./configure dal momento in cui mi chiede la libreria si prende solo la libcc_kext.a. Se metto il percorso della *.dylib mi dice "Giving up".