2009年8月6日 星期四

CMAKE入門教學-使用ANDES Toolchains加入函式庫編譯無法執行程式(6)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu10.04 LTS.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.27
2. 目的: 在CMAKE入門教學-使用ANDES Toolchains(3)之後的章節,指定使用ANDSE toolchains時,發現可以成功編譯,但是移植至Andes core實驗板卻無法正常執行程式,這是因為需要在CMakeLists.txt下增加GCC所需的編譯參數.
3. 範例程式_cmake6:
(1). 我們沿用CMAKE入門教學-使用ANDES Toolchains(3)的範例程式作修改,開啟〝src〞下的〝CMakeLists.txt〞.下載完整程式:
http://cid-b01cb9ac20175eaa.office.live.com/self.aspx/cmake6/cmake6.zip
(2). 依下列所示增加〝CMAKE_C_FLAGS〞、〝CMAKE_CXX_FLAGS〞、〝CMAKE_LD_FLAGS〞參數.(3). 輸入〝cmake .〞->〝make〞產生執行檔,其他操作步驟如CMAKE入門教學-使用ANDES Toolchains(3)所示.
(4). 之後移植至Andes core實驗板上就可以正常執行.
4. CMAKE常用的基本指令:
(1). CMAKE_C_FLAGS: 指定GCC編譯器參數.
(2). CMAKE_CXX_FLAGS: 指定G++編譯器參數.
(3). CMAKE_LD_FLAGS: 指定連結器參數.


2009年8月5日 星期三

CMAKE入門教學-使用ANDES Toolchains加入函式庫編譯(5)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 上一章節CMAKE入門教學-使用ANDES Toolchains 編譯函式庫(4),是先display.c先編譯成共享函式庫(.so),再加入計畫內,這次實驗是將display.c刪除,直接加入編譯共享函式庫(.so),證明.so檔編譯成功.
3. 範例程式_cmake5:
(1). 繼續沿用上一章節的範例,將檔案夾〝lib〞下〝display.c〞與〝CMakeLists.txt〞刪除,只留下〝display.h〞與〝libdisplay.so〞.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/cmake5/cmake5.zip
(2). 修改主〝CMakeLists.txt〞.(3). 將原本第2行刪除,修改成如下列所示.(4). 而檔案夾〝src〞下的〝CMakeLists.txt〞不做任何修改.(5). 輸入〝cmake .〞->〝make〞產生執行檔,其他操作步驟如CMAKE入門教學-使用ANDES Toolchains(3)所示.



2009年8月4日 星期二

CMAKE入門教學-使用ANDES Toolchains編譯函式庫(4)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 使用CMAKE編譯成共享函式庫(.so).
3. 範例程式_cmake4:
(1). 增加檔案與CMakeLists.txt:
a. 繼續使用上一章節的範例,增加名稱為〝lib〞檔案夾,並增加一個純文字檔〝CMakeLists.txt〞.
b. 將原本於〝src〞檔案夾內的〝display.c〞與〝display.h〞移至〝lib〞檔案夾下.
下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/cmake4/cmake4.zip
(2). 修改主〝CMakeLists.txt〞.(3). 依下列所示增加第2行.(4). 修改/lib下的〝CMakeLists.txt〞.(5). 依下列所示撰寫.(6). 修改/src下的〝CMakeLists.txt〞.(7). 依下列所示增加第11,12,15行程式,第13行需修改的程式如下列所示.(8). 輸入〝cmake .〞->〝make〞產生〝.so〞共享函式庫檔案與執行檔,其他操作步驟如CMAKE入門教學-使用ANDES Toolchains(3)所示.
4. CMAKE常用的基本指令:
(1). ADD_LIBRARY:編譯Lib函式庫.
(2). SHARED:宣告參數,產生共享函式庫.so檔.
(3). STATIC:宣告參數,產生靜態函式庫.a檔.
(4). INCLUDE_DIRECTORIES: 搜尋表頭檔路徑.
(5). HELLO_SOURCE_DIR: 宣告參數,外部編譯的程式路徑.
(6). LINK_DIRECTORIES: 搜尋函式庫表頭檔路徑.
(7). HELLO_BINARY_DIR: 宣告參數,代編譯路徑.
(8). TARGET_LINK_LIBRARIES: 執行二進制檔與函式庫連結.



2009年8月3日 星期一

CMAKE入門教學-使用ANDES Toolchains(3)

1. 開發環境:
(1). CPU: Andes RISC CPU core_N12.
(2). 平台: ADP-XC5FF676 V1.1.
(3). Linux OS: Ubuntu9.04.
(4). Toolchains: AndeSight v1.3.3 for Linux.
(5). Embedded Linux2.6.18
2. 目的: 使用CMAKE自動建構makefile,並指定使用ANDSE toolchains,讓編譯完成的程式可以在 Embedded Linux上執行.
3. 範例程式_cmake3:
(1). 我們沿用上一章節CMAKE入門教學-建構較大型的計畫(2)的範例.
http://andescore.blogspot.com/2009/07/cmake-2.html
a. 使用〝/src/CMakeLists.txt〞檔案夾.下載完整程式:
http://cid-b01cb9ac20175eaa.skydrive.live.com/self.aspx/cmake3/cmake3.zip
b. 修改CMakeLists.txt,指定編譯所需要的compile修改內容如下所示.(2). 編譯前,先在根目錄指定Toolchains,使用〝Terminal〞輸入〝source bashrc.nds32le-linux-V0〞,指定編譯路徑.注意: 新開啟〝Terminal〞視窗要重新輸入.(3). 開啟〝Terminal〞,至src檔案夾同一階層處的CMakeLists.txt檔案位置.(4). 輸入〝cmake .〞,產生makefile.(5). 輸入〝make〞,產生執行檔.(6). 在ADP-XC5執行程式:
a. 將〝HelloWorld.adx〞存在SD卡內.
注意:一般SD卡格式都為FAT32,在Linux下無法顯示長檔名,如要支援長檔名請將SD卡format成EXT2或是EXT3格式.format步驟如下所示: http://andescore.blogspot.com/2009/02/format-sd-cardext2.html
b. 因目前ADP-XC5開發板上所使用的OS為AndeSight v1.3.1 Toolchains building 會造成錯誤,請依照Embedded Linux系統(C)_在SD card上執行Embedded Linux http://andescore.blogspot.com/2009/06/embedded-linuxcsd-cardembedded-linux.html執行AndeSight v1.3.3 Toolchains building的OS,再執行cmake3程式.
(7). 輸入〝mount –o mand /dev/cf /tmp〞掛載SD 卡.(8). 輸入〝cd tmp〞至SD卡檔案掛載位置.(9). 輸入〝./HelloWorld.adx〞執行程式.(10). 程式執行完畢後要卸載SD需再根目錄輸入〝umount /tmp〞.4. CMAKE常用的基本指令:
(1). CMAKE_C_COMPILER:指定gcc編譯器.
(2). CMAKE_CXX_COMPILER:指定g++編譯器.


2009年8月2日 星期日

CMAKE入門教學-建構較大型的計畫(2)

這裡主要是介紹建構開發較大型的計畫時的範例.
1. Linux OS: Ubuntu 9.04
2. 建立一個新的計畫.
(1). 新增一個檔案夾,名稱設為〝src〞. (2). 在src檔案夾下,新增〝main.cdisplay.cdisplay.h〞檔,建構模組化程式設計. (3). 將main.c檔內依下列輸入. (4). 將display.c檔內依下列輸入. (5). 將display.h檔內依下列輸入. (6). 在src檔案夾下,新增〝CMakeLists.txt〞文字檔. (7). 將CMakeLists.txt檔內依下列輸入. (8). 在src檔案夾同一階層處,再新增加一個〝CMakeLists.txt〞文字檔. (9). 將CMakeLists.txt檔內依下列輸入.3. 開啟〝Terminal〞,至src檔案夾同一階層處的CMakeLists.txt檔案位置.
(1). 輸入〝cmake .〞, 產生makefile. (2). 輸入〝make〞, 產生執行檔.
(3). 輸入〝./HelloWorld〞,run執行檔.
4. CMAKE常用的基本指令:
(1). ADD_SUBDIRECTORY:指定子目錄,並新增目錄存放編譯完成的檔案.


2009年8月1日 星期六

CMAKE入門教學-安裝與HelloWorld(1)

在Linux OS下撰寫程式除了撰寫C或者是C++的原始程式外,還要撰寫makefile,而CMAKE工具就是用來自動產生makefile,利用CMAKE簡單幾個指令就可以省去撰寫makefile的麻煩.
http://www.cmake.org/
1. Linux OS: Ubuntu 9.04
2. 安裝步驟:
(1). 使用〝Terminal〞.
(2). 輸入〝sudo apt-get install cmake〞,輸入Password安裝.
3. 建立一個新的計畫.
(1). 新增hello.c檔:

(2). 撰寫hello.c:
(3). 新增純文字檔,並將檔名改成〝CMakeLists.txt〞,注意Cmake檔名的大小寫要一致.
(4). 撰寫CMakeLists.txt:

4. 開啟〝Terminal〞,至CMakeLists.txt檔案位置,
(1). 輸入〝cmake .〞,
產生makefile.

(2). 輸入〝make〞,
產生執行檔.
(3). 輸入〝./hello〞,run執行檔. 5. CMAKE常用的基本指令:
(1). PROJECT:定義工程計畫名稱.
(2). SET:設定需編譯的source code.
(3). ADD_EXECUTABLE:產生執行檔.
(4). ${ }:設定變數名稱.
(5). #:註解.