目錄
目錄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開發環境搭建
選擇自己需要的版本(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+數字鍵盤上的 +