基本步驟導致該問題:GCC 4.9.4交叉編譯器編譯(limits.h中的問題)
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 ../
,我運行到的是什麼最終得到安裝到$ {PREFIX}問題/lib/gcc/${TARGET}/4.9.4/include-fixed/limits.h似乎不正確。具體來說,構建和安裝GCC中的「fixincludes」位需要某個名爲「sys-include」的目錄,該目錄永遠不會被放置,當不存在時,上述limits.h不會引用關聯的syslimits.h相同的目錄)。
如果查看構建/安裝序列的輸出,可以參考從組件limitx.h,limity.h和其他一些位構建此文件。這個測試失敗了,它只是安裝GCC附帶的「通用」limits.h(它不包括對syslimits.h的引用,它使用GCC的#include_next指令來包含$ {PREFIX}/$ {TARGET}/include/limits.h有實際東西在它我需要像NAME_MAX和PATH_MAX)。
被從文件中缺少該位:
/* 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
那麼,有沒有我不傳遞給GCC的配置腳本,或者我不及格的東西提前這一步,將創建一個選項正確的sys-include目錄?
[編輯]
TARGET=i686-redhat-linux
(目標從我們使用該項目的生成服務器上 「GCC -dumpmachine」 三重)
可能更多有用的信息(?):將包裝簡單的「的wget 「從各自的檔案中抽出。我正在構建最新的Ubuntu 16.04安裝,其中我安裝了libgmp-dev和libmpfr-dev,以避免必須使用編譯器源代碼編譯它們。
'$ {TARGET}'的值是多少?請編輯該問題以改進它。 –
用一些附加信息更新了問題。希望有所幫助! –