2011-12-19 40 views
0

我有这样的代码的结构:如何编写Makefiles以获取调试符号中的相对路径?

project_dir/ 
    source1.c 
    subdir/ 
     source2.c 

Makefile电话subdir/Makefile,以使文件subdir/source2.c编译这样:

gcc -g -someoptions source2.c 
在GDB链接

和符号​​代替subdir/source2.c(结果GDB无法在源文件中找到符号)。我应该如何编写一个Makefile或在gcc中使用哪些选项来使用项目主目录的相对路径(或最终的绝对路径)来获取符号?

我不能使用:

cd .. && gcc -g -someoptions ../subdir/source2.c 

,因为我将不得不改变引用头文件中的所有文件subdir

+0

程序运行正常(没有GDB)吗? – Beta 2011-12-19 13:38:28

+0

我从gdbserver调用程序。 – 2011-12-23 08:51:43

回答

0

你的问题是平台特定的(例如在Linux GDB应该只是工作(TM),所以我假设你是在Linux上不)。

一种选择是建立这样的:

gcc -g ${PWD}/source2.c -o ... 

另一种选择是使用GDB dir命令添加到${TOP}/project_dir/subdir目录,GDB将为源搜索列表。

+0

我在Linux上工作,但我的程序在ARM处理器上运行,我使用gdb-arm。我用'dir'命令解决了这个问题。谢谢。 – 2011-12-23 08:52:49