この質問は、実際には問題自体の助けではなく、どこで助けを得ることができるかに関するものかもしれません。冗談を言ったことを許してください!
Win32で実行してAVR用のコードを生成するためにgccをビルドしようとしています。私はArduinoの従業員がAVRツールチェーンを構築するために使用するファイルから始めました。
Windowsシステムでは、AtmelはGCC 4.9.2を使用してArduinoの従業員が現在ツールチェーンを構築し、コピー/パッチを適用しました。GCCバージョン4.9.2を使用したMinGWシステム、Arduinoをダウンロードしました。ツールチェーンのソースコードそして彼らの指示に従いました。
./configure
autoconfステップでは、G:\GNU-GCC\toolchain-avr\gcc\libgcc\configure
(実際には)xgcc.exeというWin32プログラムを使用してgccを何度も正常に呼び出したように見え、autoconf makeは私のgcc-build / gccディレクトリに配置されます。最後に成功した実行には-qversion
コンパイラオプションがありました。
次の実行は、コンパイラオプションとして使用されることを除いて、まったく同じ呼び出しです-o conftest -g -w -O2 -g0 -DWIN32 conftest.c
。今回は次のコマンドを使用してコンパイラを閉じます。exec -m
。
bash exec コマンドには-m
オプションがないため、機能しません。
これはxgcc.exe
実際のプログラム(スクリプトではありません)であり、autoconf makeステップによってコンパイルされます。にコピーされたので、おそらくクロスコンパイラでしょう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.acファイルやアプリケーションの./configを生成するautoconfコードやMCマクロで問題を見つけるのにautoconfについて十分に知りません。
"exec"のautomakeツールディレクトリを検索すると、数え切れないほど多くのヒットが発生しましたが、いずれも"exec somes ..."にオプションが追加されたようには見えませんでした。しかし、私はM4について何も知らず、.acファイルをデバッグする方法を学ぶのが怖いです。
提案してください。
ベストアンサー1
ログはどこを見るべきかを知らせるのに十分です。as
エラーメッセージは、設定スクリプトの3389行の実行によりアセンブラで発生します。
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
詳細情報を表示オプションをオンにすると(設定スクリプトを編集して追加)、テキストファイルに基づいてアセンブラが実行されます。-v
コンパイラフラグに)。あなたの例では、次の行になる可能性があります。
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
次のように変更できます。
(eval "$ac_compiler -v $ac_option ->&5") 2>conftest.err
これを見つけると問題が見つかります。
xgcc
私たちが話しているプログラムは、gcc
ビルドの一部としてビルド/リンクされているようですgcc
。プログラムは、指定されたオプションに対して利用可能なオプションを表示します--help
(参照:ソースコード)。