2016-07-11 14 views
0

makeを使用しており、デバッグシンボルが生成されません。ここに私のメイクファイルがあります:デバッグシンボルが生成されない

program: ui.o data.o string.o 
     c99 -ggdb -o program2 ui.o data.o string.o 

clean : 
     rm -f program2 

ui.o : ui.c data.h 
     c99 -ggdb -c ui.c 

data.o : data.c data.h 
     c99 -ggdb -c data.c 

string.o : string.c string.h 
     c99 -ggdb -c string.c 

どのようにしてデバッグシンボルを生成できますか? gdb program2を使用してgdbを実行すると、「デバッグシンボルが見つかりません」という警告が表示されます。

+0

'c99'はコンパイラへの有効な呼び出しですか?私はあなたが代わりにこれを呼び出すべきだと思っています(他のフラグを保持してください): 'gcc -std = c99' – Tim

+1

実行ファイルを生成します。私は、c99を実行することは、gccを使ってc99コードをコンパイルする普通の方法だと言われました。ここでのThomas Porninの答えに従ってください:http://stackoverflow.com/questions/2193634/setting-std-c99-flag-in-gcc –

+0

ありがとう私はそれを知らなかった。私はgccの古いバージョンを使用していると思います。まあ、それは問題ではないので、私はあなたをもっと助けることはできません、申し訳ありません。 – Tim

答えて

1
  1. あなたMakefileprogram2を構築しますが、(最初の行に、すなわちターゲットが間違っている)programを構築するふり。
  2. あなたcleanターゲットはまた、*.o清潔そうmake clean; makeprogramのみ再リンクします必要がありますが、はそれに任意のオブジェクトを再コンパイルしません。

上記の要因の1つは、観察したデバッグシンボルが見つからない可能性が高いことです。

関連する問題