2016-10-13 2 views
0

私はHilton LipschitzのblogからMakefileを作成し、デバッグ情報を生成するために少し変更しました。主要部品が記載されています:Makefile(-c -g)でコンパイル/リンクプロセスを分離してgcc/clangにデバッグ情報を生成するには?

CC := clang -arch x86_64 
CFLAGS := -c -O0 

$(TARGET): $(OBJECTS) 
    @echo " Linking $(TARGET)"; $(CC) $^ -o $(TARGET) $(LIB) 

$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) 
    @mkdir -p $(BUILDLIST) 
    @echo "Compiling $<..."; $(CC) $(CFLAGS) $(INC) -o [email protected] $< 

debug: CFLAGS += -g 
debug: $(TARGET) 

makeこれらのコマンドを実行します(パスは...で要約されている):I

clang -arch x86_64 -c -O0 -g -I... -o build/program.o src/program.c 
clang -arch x86_64 build/program.o -o bin/program -L... 

は問題がある:これらのコマンドを実行します

clang -arch x86_64 -c -O0 -I... -o build/program.o src/program.c 
clang -arch x86_64 build/program.o -o bin/program -L... 

make debugながらmakeまたはmake debugを実行すると、program.dSYMサブフォルダは0で作成されません。フォルダー。代わりに、私は-c引数なしでコンパイルする場合:

clang -arch x86_64 -g -O0 -I... -L... -o bin/program.o src/program.c 

両方の実行可能ファイルと.dSYMbinフォルダに作成されます。

  1. コンパイルとリンク処理を分離する際に、このMakefileにデバッグ情報生成機能を追加するにはどうすればよいですか?
  2. ステップ(デバッグ情報のコンパイル/リンク)はどのように生成されますか?

UPDATE:私はGitHubのrepoを作成し、それに関連したMakefileとソースをアップロードしました。問題を再現するには、ターミナルで以下のコマンドを実行してください:

git clone https://github.com/hamid914/gdb-lldb-test.git 
cd gdb-lldb-test 
make debug 

最後の行を、make debugは、これらのコマンドを実行します。

clang -arch x86_64 -c -O0 -std=c11 -g -I include -I include/libs -I /usr/local/include -o build/program.o src/program.c 
clang -arch x86_64 build/program.o -o bin/program -L /usr/local/lib -lm -g 

そしてbinフォルダの内容は次のとおりです。

$ ls bin 
program 

私が-c引数なしでclangを実行すると、

フォルダの
clang -arch x86_64 -O0 -std=c11 -g -I include -I include/libs -I /usr/local/include -L /usr/local/lib -lm -o bin/program src/program.c 

内容は次のとおりです。

$ ls bin 
program  program.dSYM 

答えて

0

あなたは.dSYMファイルを生成するために、同様のリンカーレシピに-gを追加する必要があり、標準的な方法は、

debug: LDFLAGS += -g 
を追加することです

しかし、あなたが従っている例では、正当な理由がないために独自の変数を定義していますが、LIBが動作するはずです。

+0

リンカーに '-g'フラグを付けても.dSYMファイルは生成されません。コンパイラとリンカの両方に '-g'を追加しようとしましたが、結果は同じです。 –

+0

@HamidRohani自己完結型の例を質問に追加してください。うまく動作します。 – user657267

関連する問題