この質問は、問題自体の助けではなく、どこで助けを得るのかということかもしれません。言葉遣いはご容赦ください!
Win32で実行するgccをビルドし、AVRのコードを生成しようとしています。 Arduinoの人々がAVRツールチェーンを構築するために使用するファイルから始めました。
Windowsマシンを使用していて、AtmelがGCC 4.9.2を使用してArduinoの人々によって現在のツールチェーン(コピー/パッチ)を構築しているので、 4.9のGCCを備えたMinGWシステム)をインストールしました。 2 、Arduinoの人々の ツールチェーンソース をダウンロードし、彼らの指示に従いました(もちろん、私は誤って何か間違ったことなどをしましたか?)。
Autoconfの./configure
ステージ(実際にはG:\GNU-GCC\toolchain-avr\gcc\libgcc\configure
)は、autoconfがgcc-build/gccディレクトリに配置したxgcc.exeというWin32プログラムを使用して、gccを数回正常に呼び出すようです。最後に成功した実行には、コンパイラオプション用の-qversion
があります。
次の実行は、コンパイラオプションとして-o conftest -g -w -O2 -g0 -DWIN32 conftest.c
を使用することを除いて、まったく同じ呼び出しであり、今回はexec -m
を使用してコンパイラを起動しようとします。
Bashexecコマンドには-m
オプションがないため、これは機能しません。
xgcc.exe
は(スクリプトではなく)実際のプログラムであり、autoconfmakeステップによってコンパイルされることに注意してください。 gcc-cross.exe
にコピーされるため、クロスコンパイラである可能性があります。 したがって、autoconfランチャー(M4マクロ?)がエラーの原因であると思います。
これがconfig.log
の一部です:(exec: usage: exec [-cl] [-a name] file ...
で始まる行を探してください
gcc version 4.9.2 (GCC)
configure:3373: $? = 0
configure:3362: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include -V
xgcc.exe: error: unrecognized command line option '-V'
xgcc.exe: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3362: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include -qversion
xgcc.exe: error: unrecognized command line option '-qversion'
xgcc.exe: fatal error: no input files
compilation terminated.
configure:3373: $? = 1
configure:3389: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include -o conftest -g -w -O2 -g0 -DWIN32 conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option
exec: usage: exec [-cl] [-a name] file [redirection ...]
configure:3392: $? = 1
configure:3580: checking for suffix of object files
configure:3602: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include -c -g -w -O2 -g0 -DWIN32 conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option
exec: usage: exec [-cl] [-a name] file [redirection ...]
これが、ログを生成したと私が信じているgcc-build/gcc/libgcc/configのセクションです。
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
sed '10a\
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
rm -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
現時点では、どこに助けを求めるべきかわかりません。 Arduinoの人々は反応がなく、autoconfについて、autoconf.acファイル、アプリケーションの./configを生成するautoconfコード、またはMCマクロで問題を探すのに十分な知識がありません。
Automake toolsディレクトリで「exec」をスキャンすると無数のヒットがあり、「execsomethings ...」にオプションが追加されているようには見えませんでした。しかし、私はM4について何も知らず、.acファイルをデバッグする方法を学ぶことを恐れています。
提案をお願いします?
ログには、どこを見ればよいかが十分にわかります。エラーメッセージは、configureスクリプトで3389行目を実行した結果、アセンブラas
から送信されます。
configure:3389: /g/gnu-gcc/toolchain-avr/gcc-build/./gcc/xgcc -B/g/gnu-gcc/toolchain-avr/gcc-build/./gcc/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/bin/ -B/g/gnu-gcc/toolchain-avr/objdir/gcc/avr/lib/ -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/include -isystem /g/gnu-gcc/toolchain-avr/objdir/gcc/avr/sys-include -o conftest -g -w -O2 -g0 -DWIN32 conftest.c
g:/gnu-gcc/toolchain-avr/gcc-build/gcc/as: line 106: exec: -m: invalid option
アセンブラは、詳細オプションをオンにした場合に言及される可能性のあるテキストファイルに基づいて実行されます(configureスクリプトを編集し、-v
コンパイラフラグに)。あなたの例では、それは次の行である可能性があります。
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
これを変更できます
(eval "$ac_compiler -v $ac_option ->&5") 2>conftest.err
それを見つけたら、問題が発生する可能性があります。
私たちが議論しているように見えるxgcc
プログラムは、gcc
の構築の一部としてgcc
構築/リンクされています。そのプログラムは、--help
オプションを指定すると、使用可能なオプションを表示します( ソースコード を参照)。