autoconfはbashで "exec -m"を呼び出そうとしますが、-mはexecの有効なオペランドではありません。

autoconfはbashで

この質問は、実際には問題自体の助けではなく、どこで助けを得ることができるかに関するものかもしれません。冗談を言ったことを許してください!

Win32で実行してAVR用のコードを生成するためにgccをビルドしようとしています。私はArduinoの従業員がAVRツールチェーンを構築するために使用するファイルから始めました。

Windowsシステムでは、AtmelはGCC 4.9.2を使用してArduinoの従業員が現在ツールチェーンを構築し、コピー/パッチを適用しました。GCCバージョン4.9.2を使用したMinGWシステム、Arduinoをダウンロードしました。ツールチェーンのソースコードそして彼らの指示に従いました。

./configureautoconfステップでは、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(参照:ソースコード)。

おすすめ記事