1.使用範圍
本文檔適用於在RealEvo-IDE開發環境下移植C++工程的用戶,使用者應熟悉使用RealEvo-IDE開發環境,並具有C++語言編程的基礎知識。html
2. 準備工做
2.1 環境準備
在使用以前,須安裝有翼輝信息開發的集成開發套件,因爲系統上安裝的防火牆軟件或者殺毒軟件可能會影響到集成開發軟件的使用,所以,在使用本套件前請關閉計算機上的windows防火牆以及殺毒軟件。c++
因後續操做須要在模擬器上進行展現,因此在進行後續章節操做前,請完成mini2440模擬器的配置並啓動,具體配置步驟請參考圖2‑1中《mini2440模擬器配置啓動》。編程
2.2 資源準備
移植C++工程前,應從客戶處或經過其餘方式得到相關C++工程源碼,並確保工程源碼的正確性。本次技術筆記資源準備如圖2‑1所示。windows
圖 2-1 資源準備app
其中:mini2440_base文件爲本次移植依賴的base工程,C++工程源碼文件爲本次移植的工程源碼。函數
3. 技術實現
3.1 導入base工程
雙擊打開RealEvo-IDE軟件,選擇菜單「File-Import」,彈出界面如圖3‑1所示。spa
圖3-1 導入工程htm
點擊「Next」,彈出如圖3-2所示界面。blog
圖3-2 導入mini2440_base工程ip
點擊「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