GNU Makeを使って、多くの人が使うC/C++プロジェクトをビルドしている。このプロジェクトには多くのオプションファイルが存在し、各ユーザーはMATLABインターフェイスを通じてそれらのファイルを選択し、コマンドライン引数(make OPTS = 'XYZ'など)を使用してmakefileに提供されるため、makefileは一般的なものになります。GNU gccコールの後に "トラップを中止する:6"を作るが、呼び出しは単独で実行すると有効になる
makefileを使用すると、正しいオブジェクトの依存関係が正しく識別され、次にそれらのオブジェクトのソース前提条件が検索され、ビルドされます。しかし、オブジェクトルールを実行しようとするたびに、gccコールの直後に "Abort trap:6"というエラーが出ます。
vpath %.c $(PATH) $(OBJ_DIR)
# Pick compilers
CC1=g++
CC2=gcc
LNK=g++
# Assign variables for c/cpp implicit rules
CXXFLAGS= $(CCFLAGS) $(DEFINES) $(INCLUDES)
CFLAGS = $(CCFLAGS) $(DEFINES) $(INCLUDES)
# Assign various user-defined values
OUTPUT = -o $(USER_LIB)
C_OBJECTS = $(patsubst %.c,$(OBJ_DIR)/%.o,$(C_SOURCES))
CPP_OBJECTS = $(patsubst %.cpp,$(OBJ_DIR)/%.o,$(CPP_SOURCES))
OBJECTS = $(C_OBJECTS) $(CPP_OBJECTS) $(SIM_OBJECTS)
# User Library Dependencies and Compilation Rules
$(USER_LIB): $(OBJECTS)
$(LNK) $(LINKERFLAGS) $(CCFLAGS) $(DEFINES) $(INCLUDES) $(OUTPUT) $(OBJECTS)
$(OBJ_DIR)/%.o: %.c
$(CC2) $(CFLAGS) -c -o [email protected] $<
を次のようにMakefileのがあると私は何を得るの例は次のとおりです。ちょうど(
gcc -g -D(the defines) -I(all the includes) -c -o obj1/xyz.o ../common/xyz.c
make: *** [obj1/xyz.o] Abort trap: 6
しかし、私はそのEXACT同じgccの電話を取ると、コマンドライン上でそれを実行した場合コピー&ペースト)、ファイルが正しくコンパイルされ、オブジェクトファイルがobj1フォルダーに配置されます。
私は何かを見つけることができるかどうかを見るために 'make -d'を見ようとしました。出力はクレイジーなので、その要点は次のとおりです。
... output truncated for brevity ...
gcc -g -D(the defines) -I(all the includes) -c -o obj1/xyz.o ../common/xyz.c
Putting child 0x104f13cc0 (obj1/xyz.o) PID 24557 on the chain.
Live child 0x104f13cc0 (obj1/xyz.o) PID 24557
Reaping losing child 0x104f13cc0 PID 24557
make: *** [obj1/xyz.o] Abort trap: 6
Removing child 0x104f13cc0 PID 24557 from chain.
この時点で出力が終了します。私もmake -kを実行して、最初のエラーの後に何が起こるかを見てみました。 1つのソースファイルごとに同じ結果が得られます。ここでも、各ソースファイルは、個別に実行されたときに使用される正確な呼び出しでコンパイル可能です。
この時点で私は完全に失われています。このコンテキストでは、「トラップの中止:6」の意味に関する情報はほとんどありません。
Xcodeでインストールされたgcc-4.2でMac OSX 10.7を実行しています。
現在、.cppファイルのルールが存在しないことを認識していますが、現時点ではまだコンパイルするための.cppソースファイルがありませんが、将来はサポート構造がサポートされています遠い
私を助けることができる人のために事前にありがとう。
EDIT: "make -d"出力から1行追加されました。 編集:追加された解決策(回答に移動)
メイクファイルを呼び出すとき
場合は、このようなエラーが発生します。エラーが 'make'から来ていることを確かに知っていますか?つまり、 'make 'がgccやサブシェルによって実際に生成されるエラーに合格していないのでしょうか? –
こんにちは!どのように私はそれを調査するだろうか?コマンドラインからGCCを呼び出すと、GCC自体でエラーが発生しないことがわかります。私はあなたがそれを置くようにサブシェルからどうかをチェックする方法を知らない。 –
'OS x" gnu make ""を中止してトラップを中止しました:6 "'、Xcode、OSのアップグレードなどに関するいくつかのものを見つけました。 'make clean'で始めると同じエラーが出ますか? –