6

OS X 10.7+EclipseビルドシステムからLinuxサーバーのバイナリをコンパイルしたいと思います。これは、GCCクロスコンパイラーを意味します。私はネイティブ4.7.1から始めて、ホスト4.7.1を撮影しています。

ほとんどのオンライン手順は、組み込み開発に固有のものです。libstdc ++-v3とglibcを使用したいので、少し異なります。

成功するもの:

  1. パッケージをインストールする

    port install gcc47
    export CC=gcc-mp-47
    export LD=ld-mp-47
    export CXX=g++-mp-47
    export CPP=cpp-mp-47
    
    port install gmake
    ln /opt/local/bin/gmake /opt/local/bin/make
    
    port install gsed
    ln /opt/local/bin/gsed /opt/local/bin/sed
    
    port install gawk
    port install autoconf
    port install msgfmt
    
  2. binutils-2.22を作成してインストールします

  3. make all-gccmake install-gcc

    次の構成を使用しました。

    $ ../gcc/configure --enable-languages = c、c ++、objc、obj-c ++ --with-gmp = / opt / local --with-mpfr = / opt / local --with-mpc = / opt / local --prefix = / usr / local / cross / linux --target = x86_64-pc-linux-gnu --disable-nls

  4. ビルド環境をクロスコンパイラーに向けます

    export CC=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-gcc
    export LD=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-ld
    export AR=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-ar
    export CXX=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-g++
    export CPP=/usr/local/cross/linux/bin/x86_64-pc-linux-gnu-cpp
    
  5. 構成を使用してglibc-2.16をビルドします

    ../glibc/configure --host = x86_64-pc-linux-gnu --build = x86_64-apple-darwin11 --prefix = / usr / local / cross / linux / --with-binutils = / usr / local / cross / linux / bin / --with-headers = / usr / local / cross / linux / include / libc_cv_forced_unwind = yes libc_cv_ctors_header = yes libc_cv_c_cleanup = yes

失敗:

glibcのビルドはやがて失敗します。このメッセージは何度も表示されます。

In file included from ./sysdeps/unix/sysdep.h:20:0,
                 from ./sysdeps/unix/x86_64/sysdep.h:18,
                 from sysdeps/unix/sysv/linux/x86_64/sysdep.h:22,
                 from <stdin>:1:
sysdeps/unix/sysv/linux/sys/syscall.h:24:24: fatal error: asm/unistd.h: No such file or directory
compilation terminated.

ただし、これは正常な場合があります。

その後、生成に失敗しますstdio_lim.h。でmake -d、私はこれを取得します:

          Successfully remade target file `/Users/dkrauss/Documents/work/glibc-build/csu/abi-tag.h'.
          Considering target file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'.
           File `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h' does not exist.
           Looking for an implicit rule for `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'.
           Trying pattern rule with stem `lim'.
           Trying implicit prerequisite `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'.
           Found an implicit rule for `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'.
            Considering target file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'.
            Recently tried and failed to update file `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st'.
make[2]: *** No rule to make target `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.st', needed by `/Users/dkrauss/Documents/work/glibc-build/bits/stdio_lim.h'.  Stop.

これは、組み込みを試みる最初のヘッダーbitsです。stdio_lim.h.inそのディレクトリにある唯一のファイルであるファイルがあります.in。いくつかのルールが接続.stされている必要があり.inますか?

4

1 に答える 1