1.使用範圍
本文檔適用於在RealEvo-IDE開發環境下移植C++工程的用戶,使用者應熟悉使用RealEvo-IDE開發環境,並具備C++語言編程的基礎知識。
2. 準備工作
2.1 環境準備
在使用之前,須安裝有翼輝信息開發的集成開發套件,由於系統上安裝的防火牆軟件或者殺毒軟件可能會影響到集成開發軟件的使用,因此,在使用本套件前請關閉計算機上的windows防火牆以及殺毒軟件。
因後續操作需要在模擬器上進行展示,所以在進行後續章節操作前,請完成mini2440模擬器的配置並啓動,具體配置步驟請參考圖2-1中《mini2440模擬器配置啓動》。
2.2 資源準備
移植C++工程前,應從客戶處或通過其他方式獲得相關C++工程源碼,並確保工程源碼的正確性。本次技術筆記資源準備如圖2-1所示。
圖 2-1 資源準備
其中:mini2440_base文件爲本次移植依賴的base工程,C++工程源碼文件爲本次移植的工程源碼。
3. 技術實現
3.1 導入base工程
雙擊打開RealEvo-IDE軟件,選擇菜單“File-Import”,彈出界面如圖3-1所示。
圖3-1 導入工程
點擊“Next”,彈出如圖3-2所示界面。
圖3-2 導入mini2440_base工程
點擊“Finish”,完成mini2440_base工程的導入。
3.2 新建c++_app工程
新建c++_app工程,操作步驟如圖3-3所示(新建c++工程時候,請勾選圖3-3中第五步的選項)。
圖3-3 新建c++_app工程
點擊“Next”,彈出如所圖3-4示界面。
圖3-4 base工程選擇
點擊“Finish”,完成c++_app工程的創建。
3.3 導入c++_app工程的源文件
刪除c++_app工程中的c++_app.cpp文件,然後將圖2-1所示的源文件導入到src目錄下,如圖3-5所示(可以直接進行復制粘貼)。
圖3-5 導入c++_app工程源文件
3.4 配置c++_app工程
選中c++_app工程,右擊工程選擇“Properities”選項,設置c++_app工程的頭文件路徑,如圖3-6所示(本次c++工程依賴頭文件較多,實際移植過程以實際情況爲準)。
圖3-6 配置頭文件路徑
點擊“apply”,然後進行目標設備創建,如圖3-7所示(本次移植在mini2440模擬器上演示,實際移植過程以實際情況爲準)。
圖3-7 設置目標機IP
點擊“apply”,進行依賴的庫設置,操作步驟如圖3-8所示。
圖3-8 依賴庫設置
注:本例中c++_app工程需要依賴glib246.so,XCore.so,proxy.so,實際情況根據移植需要選擇依賴的庫文件。
3.5 編譯上傳
配置完成後,編譯c++_app工程,操作如圖3-9所示。
圖3-9 編譯工程
編譯完成後,上傳工程,操作如圖3-10所示。
圖3-10 上傳工程
3.6 模擬器上模擬運行
執行3.5節中上傳的文件,操作如圖3-11所示。
圖3-11 執行目標程序
可以得到如圖3-12所示結果。
圖3-12 程序執行結果
4. 移植中錯誤總結
4.1 引用頭文件錯誤
在編譯階段,可能會遇到頭文件找不到路徑的錯誤,如圖4-1所示。
圖4-1 頭文件路徑錯誤
解決這類問題的方法爲修改工程屬性,加入相應的頭文件路徑,如圖4-2所示。注意添加頭文件路徑時,不要拷貝頭文件,只需要把相應的頭文件路徑添加正確即可。
圖4-2 加入頭文件路徑
4.2 symbol查找
在執行階段,遇到找不到symbol的錯誤,如圖4-3所示。
圖4-3 symbol錯誤
此類問題總結原因如下:
1. 結構體未定義
2. 變量爲定義
3. 函數未定義
解決方法爲:在SourceInsight中或者RealEvo-IDE下全局搜索,找到該symbol定義的地方,如果沒有定義請根據語義或者在其本來環境下的定義實現該symbol的定義,如果已經定義,則可能是該文件沒有加入編譯。
由於c++中存在方法重載,所以編譯器存在命名粉碎規則,此類問題解決方案參考C++編譯器的命名粉碎規則。
5. 小結
本文檔介紹了SylixOS下移植C++工程的過程,並介紹移植過程中可能出現的問題以及解決相應問題的思路。
6. 參考資料
《RealEvo-IDE APP使用手冊》
《Linux工程移植到SylixOS技術筆記》
關於C++命名修飾的資料:
http://hipercomer.blog.51cto.com/4415661/855223
http://blog.sina.com.cn/s/blog_67ae19eb0101aygx.html