Newsgroup: it.comp.os.linux.iniziare
Titolo: Compilazione kernel 2.6: mission impossibile.

Salve a tutti.
Sto cercando inutilmente di compilare il kernel 2.6 sulla mia Debian
Sarge, ma non c'è verso. Ho provato con 3 diverse release del succitato
kernel (2.6.8, 2.6.13.3 e 2.6.13.4, rilasciata ieri e scaricata oggi),
ma tutti i miei tentativi si bloccano nello stesso punto ed in
corrispondenza dello stesso file. Riporto l'output finale della
compilazione:
-------------------
HOSTCC  lib/gen_crc32table
lib/gen_crc32table.c:10: parse error before `crc32table_le'
lib/gen_crc32table.c:10: warning: type defaults to `int' in declaration
of `crc32table_le'
lib/gen_crc32table.c:10: warning: data definition has no type or storage
class
lib/gen_crc32table.c:11: parse error before `crc32table_be'
lib/gen_crc32table.c:11: warning: type defaults to `int' in declaration
of `crc32table_be'
lib/gen_crc32table.c:11: warning: data definition has no type or storage
class
lib/gen_crc32table.c: In function `crc32init_le':
lib/gen_crc32table.c:23: `uint32_t' undeclared (first use in this function)
lib/gen_crc32table.c:23: (Each undeclared identifier is reported only once
lib/gen_crc32table.c:23: for each function it appears in.)
lib/gen_crc32table.c:23: parse error before `crc'
lib/gen_crc32table.c:28: `crc' undeclared (first use in this function)
lib/gen_crc32table.c: In function `crc32init_be':
lib/gen_crc32table.c:40: `uint32_t' undeclared (first use in this function)
lib/gen_crc32table.c:40: parse error before `crc'
lib/gen_crc32table.c:45: `crc' undeclared (first use in this function)
lib/gen_crc32table.c: At top level:
lib/gen_crc32table.c:51: parse error before `table'
lib/gen_crc32table.c:52: warning: function declaration isn't a prototype
lib/gen_crc32table.c: In function `output_table':
lib/gen_crc32table.c:55: `len' undeclared (first use in this function)
lib/gen_crc32table.c:58: `trans' undeclared (first use in this function)
lib/gen_crc32table.c:58: `table' undeclared (first use in this function)
make[2]: *** [lib/gen_crc32table] Error 1
make[1]: *** [lib] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.13.4'
make: *** [stamp-build] Error 2
------------------------
E qui si pianta. Ho sgooglato in lungo ed in largo cercando una
soluzione, ma l'unico riferimento ad un errore come il mio sembra essere
questo messaggio, rimasto tristemente senza risposta:
http://snipurl.com/ido2
.
Non so veramente dove cercare l'errore, sarei grato per qualunque
aiuto/indizio.
Grazie e ciao.
-- 
Lucio on Atlantic 500 grigio "Tomcat".
ICQ# 126307243  
http://lchiandu.altervista.org
"Tutto quello che possiamo fare è sperare per il meglio, aspettarci
il peggio e accontentarci di una via di mezzo"

Lchiandu wrote:

nel mio output del kernel 2.6.13.3 non mi esce...
VinXDeb:~# cat outKernel |grep gen_crc
VinXDeb:~# 
forse ti manca qualcosa perchè a quanto pare non riesce a riconoscere il
tipo uint32_t, che potresti andare a sostituire con unsigned int ma non ti
conviene... secondo me ti manca qualche libreria... ho visto il file e le
include sono:
#include <stdio.h>
#include "crc32defs.h"
#include <inttypes.h>
ho cercato il type_def di uint32_t e l'ho trovato qui:
In File /usr/include/stdint.h:
 at row
    51  #ifndef __uint32_t_defined
    52  typedef unsigned int            uint32_t;
    53  # define __uint32_t_defined
che è uno degli include di stdio.h (che sta sempre nella stessa cartella)
allora arrivo alla domanda... non è che ti mancano queste librerie
fondamentali?

 aiuto/indizio.
Questo errore significa che manca un file di intestazione, ma mi sembra
molto strano che il sorgente sia errato, è più probabile che questo file
di intestazione sia incluso in qualche pacchetto di quelli necessari alla
compilazione di cui parlavamo prima e questo pacchetto ti manca o sia
obsoleto.
Fammi sapere, ciao.

 fondamentali?
Come ho scritto a Raffaele Tannone ricontrollerò la lista dei componenti
 necessari e le relative versioni: deve essere lì la magagna.
Grazie e ciao.
-- 
Lucio .
ICQ# 126307243


 Fammi sapere, ciao.
Contaci. Grazie e ciao.
-- 
Lucio
ICQ# 126307243


 Grazie e ciao.
Allora, mai usato Debian, ma nella mia Mandriva il file "stdio.h" è
incluso nel pacchetto "glibc-devel", la descrizione del pacchetto è
"Header and object files for development using standard C libraries"
quindi senza questo credo non compili nulla in C, tantomeno il kernel.
Ciao.

 Ciao.
Ciao.
-- 
Lucio on Atlantic 500 grigio "Tomcat".
ICQ# 126307243  
http://lchiandu.altervista.org



Architecture: i386
Source: glibc
Version: 2.3.5-6
Replaces: man-db (<= 2.3.10-41), gettext (<= 0.10.26-1), ppp (<= 2.2.0f-24),
libgdbmg1-dev (<= 1.7.3-24), ldso (<= 1.9.11-9), netkit-rpc, netbase (<<
4.0), kerberos4kth-dev (<< 1.2.2-10), libc6-prof (<< 2.3.5-2)
Provides: libc-dev
Depends: libc6 (= 2.3.5-6), linux-kernel-headers
Recommends: gcc | c-compiler
Suggests: glibc-doc, manpages-dev
Conflicts: libstdc++2.10-dev (<< 1:2.95.2-15), gcc-2.95 (<< 1:2.95.3-9),
libpthread0-dev, libdl1-dev, libdb1-dev, libgdbm1-dev, libc6-dev (<<
2.0.110-1), locales (<< 2.1.3-5), libstdc++2.9-dev, netkit-rpc, libc-dev
Filename: pool/main/g/glibc/libc6-dev_2.3.5-6_i386.deb
Size: 2679850
MD5sum: a3078e5dbb3621b938a7d7a7fb285b27
Description: GNU C Library: Development Libraries and Header Files
 Contains the symlinks, headers, and object files needed to compile
 and link programs which use the standard C library.
Build-Essential: yes
Tag: devel::library, role::sw:devel-lib, role::sw:shlib
VinXDeb:~#   

 VinXDeb:~# apt-cache show libc6-dev
Immaginavo fosse quella la libreria corrispondente. Comunque non è
quella il problema, visto che è regolarmente installata. :-(
Comunque grazie.
Ciao.
-- 
Lucio


 
hai provato a controllare se i file ci stanno realmente?
inoltre potrebbe essere che manca il link simbolico /usr/src/linux? (non
penso altrimenti non avresti fatto nemmeno il make menuconfig)

 penso altrimenti non avresti fatto nemmeno il make menuconfig)
Intendi dire quello che punta alla directory linux-2.6.eccetera? Io l'ho
sempre messo per comodità, non sapevo che fosse indispensabile. Comunque
c'è.
Sono quasi sul punto di rinunciare. :-(
Grazie e ciao.


 
cioè ci stanno o no?
dai questo comando:
find /usr/include -name stdio.h
che ti esce?

 che ti esce?
/usr/include/bits/stdio.h
/usr/include/stdio.h
Quindi i file sembrano essere al loro posto, però non funge.


Ultima prova:
prova a compilare questo:
#include <stdio.h>
#include <inttypes.h>
int main(void)
{
        unsigned i;
        uint32_t j = 10;
        for( i = 1; i < j; i++)
                printf("%d\n", i);
        return 0;
}
se tolgo #include <inttypes.h> anche a me sbarella
VinXDeb:~# gcc prova.c -o prova -Wall
prova.c: In function 'main':
prova.c:5: error: 'uint32_t' undeclared (first use in this function)
prova.c:5: error: (Each undeclared identifier is reported only once
prova.c:5: error: for each function it appears in.)
prova.c:5: error: syntax error before 'j'
prova.c:6: error: 'j' undeclared (first use in this function)
VinXDeb:~# 
prova a vedere se esiste il file inittypes.h nella directory /usr/include 
prova a vedere se nel file linux/lib/gen_gen_crc32table.c ci sia #include
<inttypes.h> (anche se credo molto probabilmente ci sia eheh)
approposito che versione di gcc c'hai?

 approposito che versione di gcc c'hai?
sia la 2.95 sia la 3.3, ho provato con entrambe ma il risultato è lo stesso.
Ciao.
-- 
Lucio on Atlantic 500 grigio "Tomcat".
ICQ# 126307243  
http://lchiandu.altervista.org


 
a sto punto aggiornati il gcc... non dico di avere la snapshot... però
dicono che gcc 4 contenga tante migliorie:
VinXDeb:~# gcc --version
gcc (GCC) 4.0.2 (Debian 4.0.2-2)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
VinXDeb:~#
fammi sapere x il prog ;-)

 <inttypes.h> (anche se credo molto probabilmente ci sia eheh)
C'č pure lui. :-(
Grazie e ciao.
-- 
Lucio on Atlantic 500 grigio "Tomcat".
ICQ# 126307243  
http://lchiandu.altervista.org
"Tutto quello che possiamo fare č sperare per il meglio, aspettarci


 
allora si va a prendere le librerie da qualche altra parte!!!
prova a fare un find / -name stdio.h e vedi le directory che ti sputa fuori!

 


 


 


 prova a fare un find / -name stdio.h e vedi le directory che ti sputa fuori!
/usr/include/bits/stdio.h
/usr/include/stdio.h
/usr/i386-uclibc-linux/include/stdio.h
/usr/i386-uclibc-linux/include/bits/stdio.h
E, tra l'altro, hanno tutti dimensioni diverse, quindi sono files
completamente diversi. Ma credi veramente sia possibile che il venga
usato il file sbagliato? Se è così mi sa che ho qualche serio problema
nel mio SO.
Grazie per l'aiuto che mi stai dando e ciao.
-- 
Lucio
ICQ# 126307243
"Tutto quello che possiamo fare è sperare per il meglio, aspettarci


 
ops... trovato l'inghippo...
VinXDeb:~# find / -name stdio.h
/usr/include/bits/stdio.h
/usr/include/stdio.h
VinXDeb:~#    
adesso non so come comportarmi... cioè io farei così...
cancellerei la directory 
mkdir /opt/backup
cp -r /usr/i386-uclibc-linux/include /opt/backup
rm -rf /usr/i386-uclibc-linux/include
ln -sf /usr/include /usr/i386-uclibc-linux/include
in modo tale da far puntare tutti gli header alla stessa directory... però
non vorrei che si comprometta qualche pacchetto... di sicuro risolvi!

 non vorrei che si comprometta qualche pacchetto... di sicuro risolvi!
Se anche fosse, non ci metto molto a rimettere a posto le cose.
Grazie 1000, adesso provo e ti faccio sapere.


 Grazie 1000, adesso provo e ti faccio sapere.
Niente da fare, sempre uguale.
A questo punto provo a fare una cosa più drastica: disinstallare e
reinstallare qualsiasi cosa possa essere inerente alla compilazione
(compilatore, librerie, ecc). Ci metterò un po', ma forse riesco ad
uscire da questa assurda situazione.
Grazie e ciao.


 uscire da questa assurda situazione.
Evidentemente non è destino. Ho rimosso a colpi di Debfoster qualsiasi
pacchetto che pareva anche solo lontanamente connesso con la
compilazione (quindi fondamentalmente tutti i pacchetti *-dev e qualche
altro), i compilatori, header e poi ho reinstallato solo lo stretto
indispensabile (gcc, g++, libc6-dev, linux-kernel-headers): ho provato
sia col metodo Debian sia con il classico, ma non ne vengo fuori. Si
blocca sempre nello stesso maledettissimo punto, con lo stesso messaggio
d'errore e sullo stesso file (almeno fosse un driver o un modulo che
posso escludere dalla compilazione). Sto cominciando seriamene a pensare
a soluzioni di Windowsiana memoria. :-(


Lchiandu ha scritto:
[CUT]
Ho finalmente risolto (almeno credo). Durante le varie ricerche su
Google sono incappato in questo messaggio:
http://snipurl.com/ih1k
Sebbene io non ne sappia nulla di programmazione, avevo la forte
impressione che il problema descritto fosse molto simile al mio. Alla
fine ho provato a sostituire nel file gen_crc32table.c tutte le
ricorrenze di uint32_t con u_int32_t: mi sono detto: alla peggio mi
restituisce errore. Ho provato a compilare il file singolarmente
e......nessun errore! Ho riavviato la compilazione del kernel e questa
finalmente si è conclusa senza intoppi (sto usando il kernel 2.6.14 adesso).
Ora devo aggiustare un po' le impostazioni per risolvere qualche
problema secondario, ma il grosso è fatto.
Sentiti ringraziamenti a Raffaele Tannone e a VinX per l'aiuto che mi
hanno dato :-).
Ciao.
