[英]Setting up Netbeans/Eclipse for Linux Kernel Development
我正在做一些Linux内核开发,我正在尝试使用Netbeans。 尽管宣布支持基于Make的C项目,但我无法创建功能齐全的Netbeans项目。 这是尽管编译Netbeans分析使用完整调试信息编译的内核二进制文件。 问题包括:
我想知道是否有人在为Linux内核开发设置Netbeans方面取得了成功,如果是,那么他们使用了什么设置。 最后,我正在寻找Netbeans能够解析Makefile(首选)或从二进制文件中提取调试信息(不太理想,因为这会大大减慢编译速度),并自动确定哪些文件实际编译了哪些文件宏实际上是定义的。 然后,基于此,我希望能够找到任何数据结构,变量,函数等的定义,并具有完整的自动完成功能。
让我先谈谈这个问题:
SO的有用“相关问题”功能告诉我,以下问题是相关的: https : //stackoverflow.com/questions/149321/what-ide-would-be-good-for-linux-kernel-driver-development 。 在阅读它之后,问题更多的是IDE之间的比较,而我正在寻找如何设置特定的IDE。 即便如此,用户Wade Mealing似乎在使用Eclipse进行此类开发方面具有一些专业知识,所以我当然会感谢他(当然还有你所有的)答案。
干杯
我以前写了一个答案。 现在我想出解决方案的所有细节,并希望分享它。 不幸的是,stackoverflow不允许我编辑以前的答案。 所以我在这个新答案中写下来。
它涉及几个步骤。
[1]第一步是修改linux脚本以保留dep文件。默认情况下,在构建中使用它们后,将删除这些dep文件。 这些dep文件包含有关C文件所依赖的其他文件的确切依赖关系信息。 我们需要它们来创建构建中涉及的所有文件的列表。 因此,修改linux-xyz / scripts下的文件,使它们不要删除这样的dep文件:
linux-3.1.2/scripts
Kbuild.include: echo do_not_rm1 rm -f $(depfile);
Makefile.build: echo do_not_rm2 rm -f $(depfile);
其他步骤在我的github代码项目文件https://github.com/minghuascode/Nbk/blob/master/note-nbkparse中有详细说明。 大概你这样做:
[2]使用您的配置方法进行配置,但请务必使用“O =”选项将obj文件构建到单独的目录中。
[3]然后使用相同的“O =”选项和“V = 1”选项来构建linux,并将make输出保存到文件中。
[4]从上面的github项目运行我的nbkparse脚本。 它确实:[4.1]读取make日志文件和dep文件。 生成镜像命令。 [4.2]运行mirroring命令将相关源文件硬链接到单独的树中,并生成供NetBeans使用的make-log文件。
现在使用镜像源树和生成的日志文件创建NetBeans C项目。 NetBeans应该能够解析所有内核符号。 而且您只会看到构建中涉及的文件。
Eclipse wiki有一个关于此的页面:如何使用CDT来导航Linux内核源代码
我一直在做一些嵌入式linux开发。 包括内核模块开发并将整个linux内核源代码导入到Eclipse中,作为一个单独的项目。 我一直在Eclipse之外构建内核(到目前为止),但我没有任何理由为什么我不能在Eclipse中设置构建环境来构建内核。 对于我的项目,只要我将PATH属性设置为指向相应的linux源包含目录,对于struct字段的名称完成似乎相当不错等。
我无法评论,如果它正在拾取正确的定义而不是灰化对应的部分,因为我还没有真正关注内核本身的文件。(到目前为止)
我也想知道将Netbeans用作linux'C'IDE,因为我更喜欢Netbean用于Java GUI开发。
我认为这会奏效(为各种项目完成每一步):
[1]修改内核构建脚本以保留.d文件。 默认情况下,它们会被删除 [2]将构建过程记录到文件中。 [3]编写一个脚本来解析构建日志。 [3.1]从构建日志中,您知道每个.c文件。 [3.2]从.c文件中,您知道哪个是相应的.d文件。 [3.3]查看.d文件以找出所有包含的.h文件。 [3.4]形成一个完整的.c和.h文件列表。 [4]现在创建一个新目录,并使用“ln -s”或“ln”来选择感兴趣的文件。
现在,在[4]中为现有源代码创建一个Netbeans项目。 配置代码帮助以使用make-log文件。 在[2]中构建它时,您应该看到完全有效的源代码。
对上述步骤的一些解释:
在[2],做一个真正的构建,以便日志文件包含感兴趣的确切文件和标志。 后来的netbeans将能够使用确切的标志进行解析。
在[4]处,只选择您想要查看的文件。 将整个内核树合并到netbeans中将是不切实际的。
解析.d文件有一个技巧:许多依赖的项目不是.h文件的真实路径,它们是自动配置文件中部分linux配置部分的修改条目。 您可能需要反转修改以确定哪个是真正的头文件。
实际上netbeans网站上有一个话题。 这是讨论网址: http : //forums.netbeans.org/ntopic3075.html 。 并且讨论中链接了一个wiki页面:wiki.netbeans.org/CNDLinuxKernel。 基本上它要求你使用CFLAGS =“ - g3 -gdwarf-2”作为前缀。
我发现这个链接非常有助于在Eclipse中设置正确的索引。 在我的例子中,它需要运行一个脚本来改变Eclipse环境以匹配你的内核选项
$ autoconf-to-eclipse.py ./include/generated/autoconf.h。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.