在OS X 10.11上安装gcc 4.6.1

时间:2016-03-03 17:37:49

标签: macos gcc configuration cross-compiling

我在OS X上为MIT xv6安装gcc 4.6.1

tar xjf gcc-core-4.6.1.tar.bz2
cd gcc-4.6.1
mkdir build
cd build
../configure --prefix=/usr/local \
    --target=i386-jos-elf --disable-werror \
    --disable-libssp --disable-libmudflap --with-newlib \
    --without-headers --enable-languages=c

make all-gcc

之前情况良好
gtype-desc.c:8838:18: error: subscripted value is not an array,
      pointer, or vector
    sizeof (x_rtl[0]),
            ~~~~~^~
gtype-desc.c:8957:36: error: subscripted value is not an array,
      pointer, or vector
    sizeof (default_target_libfuncs[0]),
            ~~~~~~~~~~~~~~~~~~~~~~~^~
gtype-desc.c:9041:31: error: subscripted value is not an array,
      pointer, or vector
    sizeof (default_target_rtl[0]),
            ~~~~~~~~~~~~~~~~~~^~
gtype-desc.c:9062:31: error: subscripted value is not an array,
      pointer, or vector
    sizeof (default_target_rtl[0]),
            ~~~~~~~~~~~~~~~~~~^~
gtype-desc.c:9069:31: error: subscripted value is not an array,
      pointer, or vector
    sizeof (default_target_rtl[0]),
            ~~~~~~~~~~~~~~~~~~^~
gtype-desc.c:9076:31: error: subscripted value is not an array,
      pointer, or vector
    sizeof (default_target_rtl[0]),
            ~~~~~~~~~~~~~~~~~~^~
68 warnings and 6 errors generated.
make[1]: *** [gtype-desc.o] Error 1
make: *** [all-gcc] Error 2

make install-gccmake all-target-libgccmake install-target-libgcc以及i386-jos-elf-gcc -v显示command not found也有错误。

我该怎么做才能解决这个问题?是否有使用命令i386-jos-elf-gcc的替代方法?

  

gcc --version

     

配置: - prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1

     

Apple LLVM版本6.1.0(clang-602.0.49)(基于LLVM 3.6.0svn)

     

目标:x86_64-apple-darwin15.3.0

     

线程模型:posix

>

>

  

哪个gcc

     

的/ usr /斌/ GCC

似乎我有一个gcc编译器,但是它被重定向到clang?

2 个答案:

答案 0 :(得分:0)

[这不是一个完整的答案。]

首先,请参阅Building GCC on OS X 10.11的答案。

第二:如果您正在尝试构建交叉编译器,强烈建议您首先引导本机版本的gcc。另请参阅"构建交叉编译器"在INSTALL/build.html。我用--prefix=/usr/local/gcc构建了我的,因此我的原生gcc最终在/usr/local/gcc/bin/gcc。然后我将/usr/local/gcc/bin添加到了$PATH,并摆脱了/usr/bin/gcc/usr/bin/g++以保证安全。

正如build.html指出的那样,您还需要一个交叉汇编程序"和#34;交联剂"。因此,您通常需要下载适当版本的binutils,并在尝试构建交叉编译器之前构建。 (这是第一步,我自己,目前仍在坚持。我稍后可能会对此有更多的评论。)

最后,如果您发现构建失败,因为您对其进行了不正确的配置,以至于您必须使用不同的选项重新运行configure,则删除整个构建目录并从头开始会更安全。有时配置和构建系统,但似乎不是100%可靠,在这种情况下检测可能需要重建的内容。 (删除和重新开始是令人沮丧的,我同意,但同样,从长远来看,它确实可以节省时间。)

答案 1 :(得分:0)

我现在也在为MIT xv6安装gcc 4.6.1,但在Ubuntu上。我不知道你是否看到了这个:

MAC OS X 10.7 "LION" NOTE: The default clang compiler on Mac OS X 10.7
cannot build a working version of GCC. Use the following configure
line to work around the problem (this has reported to work with OS X 10.9.4 withXCode 5.1.1 and its Command Line Tools package (for gcc):
../configure --prefix=/usr/local \
    --target=i386-jos-elf --disable-werror \
    --disable-libssp --disable-libmudflap --with-newlib \
    --without-headers --enable-languages=c \
    CC=/usr/bin/gcc-4.2 \

我从this page复制了它。(但我认为没有必要使用该命令,因为你说事情很好。) 如果您仍然遇到此问题,this page可能会给您一些提示。在Mac上,使用工具或命令mdfind查找文件gengtype.c的位置,并修改其在该页面上提到的代码。我希望你能解决它。