目录

目录1

1 netbeans开发环境搭建2

2 netbeans工程管理2

2.1 采用IDE自动生成Makefile2

3 netbeans工程配置2

3.1 编译工具链3

3.1.1 添加配置项 3

3.1.2 设置交叉编译工具 3

3.2 头文件、链接库、预编译的宏4

3.2.1 头文件路径 4

3.2.2 链接库 5

3.2.3 预编译宏 6

3.2.4 指定输出文件的路径及名字 6

3.3 其他实用设置6

3.3.1 选择编程语言的标准 6

3.3.2 添加编译前后执行的命令 6

3.3.3 修改字体大小 7

3.3.4 记录编译号 7

3.3.5 自动格式化对齐 8

4 编译生成链接库9

5 远程调试10

5.1 gdbserver调试工具安装 10

5.2  Netbeans远程调试设置 11

附录11

常用快捷键11

 

1 netbeans开发环境搭建

官网:https://netbeans.org/

选择自己需要的版本(c/c++、linux)下载好之后直接运行*.sh文件,然后按图形界面提示点下一步即可。

2 netbeans工程管理

2.1 采用IDE自动生成Makefile

创建嵌入式工程主要配置交叉编译工具链,本文以创建C语言工程为了例。

(1)新建工程

新建C言语工程:File->New Project->C/C++ -> C/C++ Applicatin->Next

输入工程名点击完成即可。

3 netbeans工程配置

使用过程中通常需要设置编译工具、用户头文件、链接库等信息。

3.1 编译工具链

3.1.1 添加配置项

在嵌入式编程中经常需要先在宿主机编译程序运行通过后再交叉编译到目标板运行。所有最好使用两个配置项,一个是主机Linux的,另一个是嵌入式Linux的。方法如下:

Properties-> Build->Manage Configuurations->New 输入名字点OK即可。

3.1.2 设置交叉编译工具

3.2 头文件、链接库、预编译的宏

编译工具链自带的头文件和链接库在添加好编译工具链后会自动配置好,但是程序中自定义的头文件和使用到的链接库需要配置。

3.2.1 头文件路径

3.2.2 链接库

添加链接库名配置: 输入链接库名字(去掉lib和.*),如libmsc.so 输入msc即可。所有编译时需要链接非标准库的都要加上,如:线程库pthread。

3.2.3 预编译宏

Properties-> Build-> C Compiler->Preprocessor Definitions

3.2.4 指定输出文件的路径及名字

Properties-> Build-> Linker->Output

3.3 其他实用设置

3.3.1 选择编程语言的标准

C++设置方法: Properties-> Build-> C++ Compiler->C++ standard 选择C++ 11点击OK。

3.3.2 添加编译前后执行的命令

此项功能个人觉得非常有用,通过添加命令可是实现编译后将输出文件拷贝到指定目录;执行静态代码检查工具等功能。

配置方法:(注意:命令前要加两个tab,使关键字变色才能运行)

在Files视图直接打开Makefile文件。

在.build-pre:  后加入编译之前执行的命令。

在.build-post: 后加入编译之后执行的命令。

3.3.3 修改字体大小

方法:Tools –> options->Fonts & Colors

3.3.4 记录编译号

properties-> Build->C C->Cross GCC Linker->Miscellaneous->Link flags

在Additional options填写内容:

-Xlinker --defsym -Xlinker BUILD_VERSION=$$(cat $(BUILD_NUMBER_FILE))

BUILD_VERSION为变量名,BUILD_NUMBER_FILE为记录变量值得文件名。

编译前执行的命令(使BUILD_NUMBER_FILE文件里的数值加1):

@if test "${CONF}" = "DebugARM"; then \

rm ${CND_BUILDDIR}/${CONF}/${CND_PLATFORM_${CONF}}/rtklite.o; \

if ! test -f $(BUILD_NUMBER_FILE); then echo 0 > $(BUILD_NUMBER_FILE); else \

echo $$(($$(cat $(BUILD_NUMBER_FILE)) + 1)) > $(BUILD_NUMBER_FILE); \

fi \

fi;\

if test "${CONF}" = "Debug"; then \

rm ${CND_BUILDDIR}/${CONF}/${CND_PLATFORM_${CONF}}/rtklite.o; \

if ! test -f $(BUILD_NUMBER_FILE); then echo 0 > $(BUILD_NUMBER_FILE); else \

echo $$(($$(cat $(BUILD_NUMBER_FILE)) + 1)) > $(BUILD_NUMBER_FILE); \

fi \

fi;\

在程序中调用变量:

extern int BUILD_VERSION;

printf(“%d”, (int)(&BUILD_VERSION));

3.3.5 自动格式化对齐

选择代码按快捷键:Alt+Shift+F

自定义规则:

Tools –> options –> Editor –> Formatting –> Manage –>New 新建配置项。

Braces placement->Function declaration->Next line(修改函数的开头大括号)

4 编译生成链接库

建议新建一个配置项单独用于编译链接库。

链接库里一定不能有main函数,所以有main函数的文件不能一起编译,只需将需要用到的源文件编译即可。

1、 排除不需要编译的文件

在Projects视图中 source Files里选中不需要编译的文件,鼠标右键点Properties->General->Exclued  From  Build 打上勾。

2、 设置编译

Properties->Build->Configuration Type 选择Dynamic Library(动态链接库),也可以选择Static Library(静态链接库)。选好后直接编译工程就可以了。

5 远程调试

远程调试是在主机上控制调试目标板上运行的程序,主要有串口和网络两种连接方式,本文介绍的是通过网络(TCP)的方式进行远程调试。调试需要使用gdb工具,所以通过交叉编译得到在目标板运行的gdbserver工具和在相应的在主机运行的gdb客户端。

5.1 gdbserver调试工具安装

下载地址:http://www.gnu.org/software/gdb/download/

制作目标板的gdbserver

$cd gdb/gdbserver/(进入gdb-7.10/gdb/gdbserver/)

$./configure --target=arm-arago-linux-gnueabi --host=arm-arago-linux-gnueabi

$make

编译完成后会在当前目录输出gdbserver文件,把gdbserver拷贝到目标板运行。

输出如下信息表示已完成gdb工具的制作:

$./gdbserver

Usage:  gdbserver [OPTIONS] COMM PROG [ARGS ...]

gdbserver [OPTIONS] --attach COMM PID

gdbserver [OPTIONS] --multi COMM

...............................

5.2  Netbeans远程调试设置

在netbeans官网的Plugins里找到gdbservion进行插件下载。

1、Netbeans安装插件:

Tools->Plugins->Downloaded->Add Plugins(选择插件)->Install

2、运行远程调试

先在目标板上运行gdbserver

$./gdbserver 192.168.5.1:1234 demo 运行gdbserver,demo为调试的应用程序

Process test created; pid = 1032输出以下消息表示运行成功

Listening on port 1234

连接成功后:

[root@gware /root]#./gdbserver 192.168.5.1:1234 demo

Process demo created; pid = 1032

Listening on port 1234

Remote debugging from host 192.168.5.100

附录

常用快捷键

查看和自定义快捷键:Tools->Options->Keymap

格式化(自动对齐):Alt+Shift+F
注释/取消注释:Ctrl+/
显示搜索对话框:Ctrl+H
撤销:Ctrl+Z
保存:Ctrl+S
保存所有:Ctrl+Shift+S

跳到指定行:Ctrl + G

折叠所有代码块:Ctrl-Shift+数字键盘上的 -
展开所有代码块:Ctrl-Shift+数字键盘上的 +

04-16 06:33