C++ コードベースを構築しようとしています。(コードはたまたま Cap'n Proto 0.5.3 ですが、これは他のプロジェクトでも見られます。) MinGW-w64 で GCC を使用してビルドし、MSYS2 でビルドを実行しています。GCC は 5.2.0 です。メイクは4.1です。
Make を実行すると、しばらくは進みます。その後、実行しようとしたコマンドがエラーで失敗したため、停止します。十分に公平です。エラーは私を混乱させます。Make の出力からコマンドをコピーして端末に貼り付け、変更せずに手動で実行しようとしました。私はそれが同じように再び失敗することを期待しています。その場合、問題を調査するためにおそらくそれをいじります...しかし、それは成功します! (ええと、libtool については何も知りません...とにかく、指定された出力ファイルを生成します!)
上記のアクションの図:
MSYS /c/programmingstuff/capnproto-c++-0.5.3
$ make capnp.exe
C:/msys64/usr/bin/sh.exe ./libtool --tag=CXX --mode=link g++ -std=gnu++11 -I./src -I./src -DKJ_HEADER_WARNINGS -DCAPNP_HEADER_WARNINGS -DCAPNP_INCLUDE_DIR='"/usr/local/include"' -mthreads -static-libgcc -static-libstdc++ -mthreads -release 0.5.3 -no-undefined -o libkj.la -rpath /usr/local/lib src/kj/common.lo src/kj/units.lo src/kj/memory.lo src/kj/refcount.lo src/kj/array.lo src/kj/string.lo src/kj/string-tree.lo src/kj/exception.lo src/kj/debug.lo src/kj/arena.lo src/kj/io.lo src/kj/mutex.lo src/kj/thread.lo src/kj/main.lo src/kj/parse/char.lo
libtool: link: you must specify an output file
libtool: link: Try `libtool --help --mode=link' for more information.
makefile:1405: recipe for target 'libkj.la' failed
make: *** [libkj.la] Error 1
MSYS /c/programmingstuff/capnproto-c++-0.5.3
$ C:/msys64/usr/bin/sh.exe ./libtool --tag=CXX --mode=link g++ -std=gnu++11 -I./src -I./src -DKJ_HEADER_WARNINGS -DCAPNP_HEADER_WARNINGS -DCAPNP_INCLUDE_DIR='"/usr/local/include"' -mthreads -static-libgcc -static-libstdc++ -mthreads -release 0.5.3 -no-undefined -o libkj.la -rpath /usr/local/lib src/kj/common.lo src/kj/units.lo src/kj/memory.lo src/kj/refcount.lo src/kj/array.lo src/kj/string.lo src/kj/string-tree.lo src/kj/exception.lo src/kj/debug.lo src/kj/arena.lo src/kj/io.lo src/kj/mutex.lo src/kj/thread.lo src/kj/main.lo src/kj/parse/char.lo
libtool: link: ar cru .libs/libkj.a src/kj/common.o src/kj/units.o src/kj/memory.o src/kj/refcount.o src/kj/array.o src/kj/string.o src/kj/string-tree.o src/kj/exception.o src/kj/debug.o src/kj/arena.o src/kj/io.o src/kj/mutex.o src/kj/thread.o src/kj/main.o src/kj/parse/char.o
libtool: link: ranlib .libs/libkj.a
libtool: link: ( cd ".libs" && rm -f "libkj.la" && cp -pR "../libkj.la" "libkj.la" )
この後、もう一度 Make を実行すると、さらに少し進んで、同じようにハングアップするだけです。コピーして貼り付けて、もう一度キックスタートします。このサイクルは、プロジェクトが完全にビルドされるか、実際にエラーが発生するまで繰り返されます。
これは libtool の問題ではないと思います。この同じセットアップで何か他のものを構築しようとしているときに、いくつかの g++ コマンドで同じことを見てきました。Makeまたは私のシェルに何か問題があるのでしょうか?知らない。
どうすればこれを防ぐことができますか? または、それが失敗した場合、何が起こっているかについてさらに情報を得るにはどうすればよいでしょうか? 同じコマンドを Make で実行すると失敗するが、私が実行すると成功することに困惑しています。