ARM Cross-Compiler — Änderungen 6269 → 9760

Zeile 3: Zeile 3:
  
 
== Vorbereitungen ==  
 
== Vorbereitungen ==  
−
Die Erstellung eines Cross-Compilers für ARM-Architekturen erfolgt anfangs analog zu der Erstellung eines [[X86-64_Cross-Compiler|Cross-Compilers]] für [[X86-64|x86-64 Prozessoren]]: Es müssen die [http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.gz binutils] und der [http://ftp.gnu.org/gnu/gcc/gcc-4.4.2/gcc-core-4.4.2.tar.bz2 gcc] in ihrer jeweils aktuellen Version (Stand: 09. November 2009) heruntergeladen werden. Sollen mehr Sprachen als C unterstützt werden, so müssen die entsprechenden Pakete unter [http://ftp.gnu.org/gnu/gcc] heruntergeladen werden.
+
Die Erstellung eines Cross-Compilers für ARM-Architekturen erfolgt anfangs analog zu der Erstellung eines [[X86-64_Cross-Compiler|Cross-Compilers]] für [[X86-64|x86-64 Prozessoren]]: Es müssen die [http://ftp.gnu.org/gnu/binutils/binutils-2.21.tar.gz binutils] und der [http://ftp.gnu.org/gnu/gcc/gcc-4.6.0/gcc-core-4.6.0.tar.bz2 gcc] in ihrer jeweils aktuellen Version (Stand: 11. Mai 2011) heruntergeladen werden. Sollen mehr Sprachen als C unterstützt werden, so müssen die entsprechenden Pakete unter [http://ftp.gnu.org/gnu/gcc] heruntergeladen werden.
  
 
Es werden nun ein paar Variablen erstellt:
 
Es werden nun ein paar Variablen erstellt:
Zeile 21: Zeile 21:
 
  $ make all
 
  $ make all
 
  # make install
 
  # make install
−
 
−
=== Fehler beim Bauen ===
 
−
Unter Ubuntu kann es passieren, dass make nicht reibungslos durchläuft und mit einem Fehler abbricht:
 
−
 
−
cc1: warnings being treated as errors
 
−
../../cross-arm-binutils/gas/config/tc-arm.c: In function ‘make_mapping_symbol’:
 
−
../../cross-arm-binutils/gas/config/tc-arm.c:2489: error: suggest braces around empty body in an ‘if’ statement
 
−
 
−
Hier hilft entweder das Entfernen des Compiler-Flags "-Werror" oder man editiert die Datei via
 
−
 
−
$ vim ../cross-arm-binutils/gas/config/tc-arm.c
 
−
 
−
und schreibt nach dem if-Statement in Zeile '''2489''' zwei Klammern:
 
−
 
−
'''Vorher'''
 
−
<c>
 
−
2489  if (frag->tc_frag_data.last_map != NULL)
 
−
2490    know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP));
 
−
2491  frag->tc_frag_data.last_map = symbolP;
 
−
</c>
 
−
 
−
'''Nachher'''
 
−
<c>
 
−
2488  if (frag->tc_frag_data.last_map != NULL)
 
−
2489  {                                                                                                                                 
 
−
2490    know (S_GET_VALUE (frag->tc_frag_data.last_map) < S_GET_VALUE (symbolP));
 
−
2491  }
 
−
2492
 
−
2493  frag->tc_frag_data.last_map = symbolP;
 
−
</c>
 
  
 
== gcc bauen ==
 
== gcc bauen ==
Zeile 59: Zeile 29:
 
Dann ruft man configure wie folgt auf:
 
Dann ruft man configure wie folgt auf:
  
−
  $ ../cross-arm-gcc/gcc-4.4.2/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c --without-headers
+
  $ ../cross-arm-gcc/gcc-4.6.0/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c --without-headers
  
 
Nach erfolgreichem configure kann der gcc mittels  
 
Nach erfolgreichem configure kann der gcc mittels