GCC (Cross) findet Default-Include-Path nicht

Dieses Thema im Forum "C/C++" wurde erstellt von Schneemann, 04.08.2008.

  1. #1 Schneemann, 04.08.2008
    Schneemann

    Schneemann Routinier

    Dabei seit:
    27.06.2006
    Beiträge:
    289
    Zustimmungen:
    0
    Ort:
    /home/janosch
    Hi,

    Ich baue mir gerade einen GCC-Crosscompiler für mein OS. GCC und Binutils habe ich erfolgreich kompiliert. Meine Libs habe ich nach $PREFIX/lib bzw. die Header nach $PREFIX/include kopiert. Wenn ich jetzt versuche mein Testprogramm zu kompilieren, bricht er ab, weil er meine Header nicht finden kann. Wenn ich denn Include-Path per -I an GCC gebe, funktioniert es. Meine Libs findet er auch nicht. Wenn ich GCC mit "--includedir $PREFIX/include" kompiliere verändert sich nichts. $PREFIX ist richtig, das habe ich schon mit -v ausprobiert.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 04.08.2008
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Offtopic + aus Interesse:

    Was ist denn "dein OS"?
     
  4. #3 Schneemann, 04.08.2008
    Schneemann

    Schneemann Routinier

    Dabei seit:
    27.06.2006
    Beiträge:
    289
    Zustimmungen:
    0
    Ort:
    /home/janosch
    http://jgraef.bplaced.net/meinos/
    Das letzte Floppy-Image ist aber schon alt (noch alter Kernel) und den letzten Sourcecode traue ich mich kaum euch zu zeigen (also der Sourcecode-Stil spiegelt nicht den heutigen wieder) ;)
    meinOS (ja ein besserer Name ist mir wirklich nicht eingefallen) ist ein unix-ähnliches Mikrokernel-Betriebssystem. Mikrokernel bedeutet einfach nur, dass der Kernel zu einfach wie möglich gehalten wird, somit laufen alle Treiber im Userspace. Naja, im Moment macht meinOS halt noch nicht viel, Außer ein paar Treiber starten, die es zum Booten braucht.

    Und ja, es ist wirklich ein richtiges Betriebssystem. Also ich intepretiere deine Anführungszeichen mal so, ob du daran zweifelst, ob es "mir" gehört oder überhaupt ein richtiges OS ist. Naja kann ich verstehen, da das Thema OS Development oft von (wie soll man sie anderst nennen) Noobs misbraucht wird.
     
  5. #4 Tropezien, 08.08.2008
    Tropezien

    Tropezien Ja, aber hallo ...

    Dabei seit:
    09.12.2004
    Beiträge:
    18
    Zustimmungen:
    0
    Die default-Include und -Link-Pfade müssen bereits beim Bauen des Cross-Compilers mit angegeben werden. Um zu kontrollieren welche Pfade Dein Compiler per default verwendet ruf' einfach mal auf:
    Code:
    gcc -E -v /dev/null -
    
    Welche Version des gcc willst Du denn cross bauen? Passen gcc, glibc, und binutils zusammen, sind also aufeinander abgestimmt?

    Eine typische build-Reihenfolge für eine gcc-3.4.3 cross-toolchain ist:

    1. binutils bauen
    2. Linux-Header bauen (der gcc braucht einige Kernel-Headerfiles)
    3. glibc-Header erzeugen und installieren
    4. Eine bootstrap-Version des gcc erzeugen
    5. glibc endgültig mit dem bootstrap-gcc bauen
    6. gcc mit der neuen glibc bauen
    Das Ganze natürlich mit einem Sack voller Argumente und Optionen.

    Das wichtigste aber sind beim cross-build die drei Parameter build,host und target. Hierzu ein Zitat aus einem meiner Build-Skripte:
    Insbesondere target ist wichtig, weil damit in Verbindung mit prefix beim configure-run das spätere Zielverzeichnis für die Installation des gcc festgelegt wird. Diesen Pfad findet man dann wieder in der `gcc -E -v /dev/null -` Ausgabe von oben.

    Das cross-building der toolchains hat mich schon manches graue Haar gekostet. Und praktisch mit jeder gcc/glibc/binutils-Kombination wird herumgebastelt und es funktioniert nicht mehr, was vorher problemlos lief. Nicht umsonst gibt es eine ganze Menge Lieferanten für (kostenpflichtige) cross-toolchains; da ist richtig Zeit und Know-How drin.
     
  6. #5 marcellus, 08.08.2008
    marcellus

    marcellus Kaiser

    Dabei seit:
    09.05.2007
    Beiträge:
    1.392
    Zustimmungen:
    0
    Sollte das crosscompilen nicht unnötig sein, wenn meinOS elf kompatibel ist?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 Schneemann, 09.08.2008
    Schneemann

    Schneemann Routinier

    Dabei seit:
    27.06.2006
    Beiträge:
    289
    Zustimmungen:
    0
    Ort:
    /home/janosch
    Ich will aber, dass man Apps für meinOS bauen kann, ohne die ewig langen Parameterlisten, wo die ganzen Header uns Libs liegen. Das ist praktischer für große Apps zu portieren.
     
  9. #7 Tropezien, 11.08.2008
    Tropezien

    Tropezien Ja, aber hallo ...

    Dabei seit:
    09.12.2004
    Beiträge:
    18
    Zustimmungen:
    0
    Das ELF-Format gibt nur eine grundsätzliche Aufteilung von einzelnen Datenblöcken innerhalb einer Datei an. Dabei haben bestimmte Datenblöcke ein bestimmtes Format und können direkt interpretiert werden, z.B. der Header-Block. Aber die Code-Blöcke können zwar auf jeder Maschine (jedem Prozessor) gelesen, aber nicht ausgeführt werden. Damit diese Codeblöcke auch ausgeführt werden können, muss der Maschinencode des betreffenden Target-Prozessors enthalten sein. Und dazu wird i.A. ein Cross-Compiler verwendet. Vorausgesetzt natürlich ich habe unterschiedliche Prozessoren auf meiner Build- und meiner Target-Plattform.
    Aber selbst wenn ich den gleichen Prozessortyp verwende heißt das noch lange nicht, dass ich einfach auf dem Build-Host übersetzte Programme auf dem Target laufen lassen kann. Dazu gehören dann auch noch die passenden Bibliotheken (entfällt beim statischen Linken). Diese müssen sowohl beim Linken als auch zur Laufzeit vorhanden sein.
     
Thema:

GCC (Cross) findet Default-Include-Path nicht

Die Seite wird geladen...

GCC (Cross) findet Default-Include-Path nicht - Ähnliche Themen

  1. Wo befindet sich der Autostartordner?

    Wo befindet sich der Autostartordner?: Hallo ich habe CentOS 7.2.15.11 und Desktopumgebung mate , wo befindet sich der Autostartordner?
  2. BSI-Audit findet keine akuten Probleme in OpenSSL

    BSI-Audit findet keine akuten Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...
  3. BSI-Audit findet keine akute Probleme in OpenSSL

    BSI-Audit findet keine akute Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...
  4. Upgrade Sles11 auf Sles12 findet Partitionen nicht

    Upgrade Sles11 auf Sles12 findet Partitionen nicht: Hallo zusammen, ich versuche gerade ein upgrade von Sles11 auf Sles12. Das ist auch durchgelaufen. Nach einem boot Versuch meldet das System es...
  5. Der Augsburger Linux-Infotag 2015 findet am 28. März statt.

    Der Augsburger Linux-Infotag 2015 findet am 28. März statt.: Am Samstag, den 18 März findet bereits zum 14. Mal an der Hochschule Augsburg der Linux-Infotag 2015 statt. Weiterlesen...