Grundlegende Schritte auf die Frage im Vorfeld:GCC 4.9.4 Cross-Compiler bauen (limits.h Ausgabe)
cd linux-2.6.35.9/
make ARCH=x86 INSTALL_HDR_PATH=${PREFIX}/${TARGET} headers_install
cd ../
cd build-binutils/
sh ../binutils-2.28/configure --prefix=${PREFIX} --target=${TARGET}
make
make install
cd ../
cd build-gcc/
sh ../gcc-4.9.4/configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c,c++ --disable-multilib
make all-gcc
make install-gcc
cd ../
Das Problem, das bei mir läuft in ist das, was landet in $ installiert zu werden {PREFIX} /lib/gcc/${TARGET}/4.9.4/include-fixed/limits.h scheint nicht korrekt zu sein. Insbesondere erwartet das "fixincludes" -Bit beim Erstellen und Installieren von GCC ein Verzeichnis namens "sys-include", das nie eingefügt wurde, und wenn dies nicht der Fall ist, verweist das oben erwähnte limits.h nicht auf die zugehörige syslimits.h (in der dasselbe Verzeichnis).
Wenn ich in die Ausgabe der Build/install-Sequenz schaue, gibt es eine Referenz zum Erstellen dieser Datei aus den Komponenten limitx.h, limity.h und einigen anderen Bits. Dieser Test schlägt fehl und es werden nur die "generischen" limits.h installiert, die mit GCC geliefert wurden (ohne einen Verweis auf syslimits.h, der die # include_next-Direktive von GCC verwendet, um $ {PREFIX}/$ {TARGET} aufzunehmen/include/limits.h das hat tatsächlichen Zeug drin ich brauche wie NAME_MAX und PATH_MAX).
Das Bit, das aus der Datei fehlt, ist:
/* This administrivia gets added to the beginning of limits.h
if the system has its own version of limits.h. */
/* We use _GCC_LIMITS_H_ because we want this not to match
any macros that the system's limits.h uses for its own purposes. */
#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */
#define _GCC_LIMITS_H_
#ifndef _LIBC_LIMITS_H_
/* Use "..." so that we find syslimits.h only in this same directory. */
#include "syslimits.h"
#endif
So gibt es eine Option, ich bin nicht auf GCC Konfigurationsskript geben oder dass ich nicht zu etwas vorbei diesem Schritt bin voraus, dass schaffen würde das sys-include Verzeichnis richtig?
[EDIT]
TARGET=i686-redhat-linux
(ein Ziel triple von "gcc dumpmachine" auf einem Build-Server wir für das Projekt verwenden)
Möglicherweise weitere hilfreiche Informationen (?): Die Pakete einfach wget“waren "zieht aus jeweiligen Archiven. Ich baue auf einer aktuellen Ubuntu 16.04 Installation auf, bei der ich libgmp-dev und libmpfr-dev installiert habe, um zu vermeiden, dass sie mit dem Quellcode des Compilers kompiliert werden müssen.
Was ist der Wert von $ {TARGET}? Bitte bearbeiten Sie die Frage, um sie zu verbessern. –
Aktualisierte die Frage mit einigen zusätzlichen Informationen. Ich hoffe, das hilft! –