GCCを使用したクロスビルド用のマネージドCFLAGS

GCCを使用したクロスビルド用のマネージドCFLAGS

作りたいロックボックスMIPS ターゲットのソースです。彼らのwikiによるとツールチェーンが必要です。バイナリチルス v2.17そしてGCC v4.1.2~のためmipsel-elfターゲットとCFLAGS="-U_FORTIFY_SOURCE -fgnu89-inline"その両方の構成ラインは次のとおりです。

CFLAGS='-U_FORTIFY_SOURCE -fgnu89-inline' ./configure --target=mipsel-elf --enable-languages=c --disable-libssp --disable-docs

binutilsをビルドしてインストールすることはできますが、GCCは「自動ビルド」と手動メソッドの両方で失敗します。完全な生産日誌):

make[4]: Entering directory `/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc'
/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc/xgcc -B/home/malte/Software/devel/linux-dev/ubuntu/gcc/gcc-4.1.2/host-x86_64-unknown-linux-gnu/gcc/ -B/usr/local/mipsel-elf/bin/ -B/usr/local/mipsel-elf/lib/ -isystem /usr/local/mipsel-elf/include -isystem /usr/local/mipsel-elf/sys-include -O2 -O2 -U_FORTIFY_SOURCE -fgnu89-inline  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -I. -I. -I../.././gcc -I../.././gcc/. -I../.././gcc/../include -I../.././gcc/../libcpp/include   -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-unit-at-a-time -Dinhibit_libc -G 0 \
      -c ../.././gcc/crtstuff.c -DCRT_BEGIN \
      -o crtbegin.o
cc1: error: unrecognized command line option "-fgnu89-inline"
make[4]: *** [crtbegin.o] Error 1

私が知っている限り、問題はCFLAGSホストコンパイラがxgccこのフラグを知らないか必要としない「最小」コンパイラに渡すことです。-fgnu89-inlineGCC 4.1.2はC89関数のインラインセマンティクスを使用しているため、ビルドは失敗しません。

-fgnu89-inlineQ:2番目のステップで最小コンパイラではなくホストコンパイラに渡すようにビルドを設定するにはどうすればよいですか?

-fgnu89-inlineに置き換えると、ビルドが成功することがわかりましたが、-std=gnu89これは間違っているようです。組み込みデバイスのクロスコンパイルは十分に難しいので、別のエラーの原因を紹介したくありません。

システムメッセージ:

  • オペレーティングシステム:Ubuntu 14.04(x86_64)
  • ホストbinutils: 2.26.1-1ubuntu1~16.04.3
  • ホスト gcc: 6.2.0-3ubuntu11~14.04
  • GNUブランド:3.81
  • 自動構成:2.13

ボーナス:ビルド構成に追加すると、上記の--with-arch=<ANYTHING>ようなエラーが発生します。

cc1: error: unrecognized command line option "-march=native"
cc1: error: unrecognized command line option "-fgnu89-inline"

ベストアンサー1

おすすめ記事