summaryrefslogtreecommitdiff
path: root/qtopia-dev/document.it.rest.txt
blob: 9844ba88094d39e01899b78227261b53020c2d2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Installare QTopia oggi
======================
 
Se avete `GCC 2.95.x`_ installato
=================================
 
Potete seguire le istruzioni di `questo how-to`_, e tutto andrà bene.
 
Se avete una versione successiva
================================
 
Ad esempio se fate davvero sviluppo in C++, non potete usare una versione del GCC
precedente la 3.1, visto che mancano componenti findamentali (stingstream, tanto per
dire) e ci sono bug piuttosto grossi.
 
Qui arriva il problema: i pacchetti indicati dallo `how-to di cui sopra`_ sono
compilati col GCC 2.95.2, e siccome la ABI è cambiata radicalmente, i programmi
compilati con GCC 3.x non passeranno la fase i linking con le librerie qt-embedded.
 
A questo punto bisogna installare il GCC 2.95.2, vero? **Sbagliato!** Il GCC 2.95.2 ha
un bug nella libreria libio (base per gli stream C++) per cui non compila con la glibc
2.2 (e visto che avete il GCC aggiornato, avete di sicuro anche la glibc aggiornata)
(è cambiato il tipo per gli offset nei file: da int a una struct con due int, per
gestire le posizioni a 64 bit). Bisogna usare il GCC 2.95.3, che ha risolto questo
problema (a quanto ho capito dalla diff, non supporta i file oltre i 4GB, ma visto che
vogliamo compilare programmi che poi andranno sullo Zaurus, non è una gran
limitazione) (la ABI del .3 è la stessa del .2).
 
A questo punto vogliamo però che il 2.95 non sovrascriva il nostro 3: vogliamo
installarlo in una directory a parte. Questo si ottiene specificando l'opzione
--prefix allo script configure.
 
Istruzioni passo-passo
----------------------
 
I pacchetti già fatti
`````````````````````
 
Scaricate:
 
*   `gcc 2.95.2 cross compiler x86-arm`_
 
*   `binutils 2.11.2 cross x86-arm`_
 
*   `glibc 2.2.2 arm`_
 
*   `header Linux 2.4.6 arm`_
 
*   `QTopia 1.5.0 free edition, sia x86 che arm`_
 
Installateli tutti (con rpm, a nome di root). Si creeranno le directory /opt/Embedix
con la toolchain per arm, e /opt/Qtopia con le librerie e i programmi per compilare
sia x86 che arm.
 
Il GCC
``````
 
Scaricate gcc-core-2.95.3.tar.gz e gcc-g++-2.95.3.tar.gz da un `mirror GNU`_.
 
Per compilare (suppongo che abbiate messo i pacchetti del GCC nella /tmp):
 
*   cd /tmp
 
*   tar zxvf gcc-core-2.95.3.tar.gz;tar zxvf gcc-g++-2.95.3.tar.gz
 
*   mkdir gcc-obj;cd gcc-obj
 
*   ../gcc-2.95.3/configure --prefix=/opt/Embedix/native --enable-shared
 
*   make bootstrap
 
*   make install (questo dovreste farlo a nome di root, oppure aver dati permessi in
    scrittura al vostro utente normale su /opt/Embedix)
 
È un po' strano mettere il compilatore nativo sotto /opt/Embedix, ma mi sembra comodo
per chiarire in quale contesto lo uso.
 
Gli script
``````````
 
Fanno comodo un paio di script per impostare variabili d'ambiente nei due casi:
compilazione nativa (durante lo sviluppo) e cross-compile (alla fine, per trasferire
il programma sullo Zaurus)
 
Prendete quelli forniti dalla Sharp: `dev-x86-qpe`_ e `dev-arm-qpe`_.
 
In dev-x86-qpe cambiate le righe che impostano PATH e LD_LIBRARY_PATH con queste:
 
::
 
    PATH=$QTDIR/bin:$QPEDIR/bin:/opt/Embedix/tools/bin:/opt/Embedix/native/bin:${ORG_PATH}
    LD_LIBRARY_PATH=$QTDIR/lib:/opt/Embedix/native/lib:${ORG_LD_LIBRARY_PATH}
..
 
 
 
In questo modo verrà usato il GCC 2.95.3 che abbiamo appena compilato.
 
.. _`dev-x86-qpe`:
    http://docs.zaurus.com/downloads/dev-x86-qpe.sh
 
.. _`mirror gnu`:
    http://www.gnu.org/server/list-mirrors.html
 
.. _`qtopia 1.5.0 free edition, sia x86 che arm`:
    http://docs.zaurus.com/downloads/qtopia-free-1.5.0-1.i386.rpm
 
.. _`binutils 2.11.2 cross x86-arm`:
    http://docs.zaurus.com/downloads/binutils-cross-arm-2.11.2-0.i386.rpm
 
.. _`how-to di cui sopra`:
    http://docs.zaurus.com/linux_compiler_setup_howto.shtml
 
.. _`questo how-to`:
    http://docs.zaurus.com/linux_compiler_setup_howto.shtml
 
.. _`glibc 2.2.2 arm`:
    http://docs.zaurus.com/downloads/glibc-arm-2.2.2-0.i386.rpm
 
.. _`header linux 2.4.6 arm`:
    http://docs.zaurus.com/downloads/linux-headers-arm-sa1100-2.4.6-3.i386.rpm
 
.. _`dev-arm-qpe`:
    http://docs.zaurus.com/downloads/dev-arm-qpe.sh
 
.. _`gcc 2.95.x`:
    http://gcc.gnu.org/gcc-2.95/
 
.. _`gcc 2.95.2 cross compiler x86-arm`:
    http://docs.zaurus.com/downloads/gcc-cross-sa1100-2.95.2-0.i386.rpm