web-dev-qa-db-ja.com

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

この質問は、問題自体の助けではなく、どこで助けを得るのかということかもしれません。言葉遣いはご容赦ください!

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ファイルをデバッグする方法を学ぶことを恐れています。

提案をお願いします?

1
HiTechHiTouch

ログには、どこを見ればよいかが十分にわかります。エラーメッセージは、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オプションを指定すると、使用可能なオプションを表示します( ソースコード を参照)。

1
Thomas Dickey