1. 程式人生 > >visual studio上搭建arm交叉編譯環境

visual studio上搭建arm交叉編譯環境

前言

最近使用SlickEdit進行arm9應用程式的開發,感覺程式碼編輯、查詢、定義跳轉、函式引用處查詢等功能非常不好用,這可能是由於我之前都是在visual  studio(vs)上進行程式碼的開發的原因,個人感覺作為整合開發環境,VS+VA 進行程式碼的開發是最方便,最好用的,所以就嘗試了下,在visual studio 2013上建立一個arm的交叉編譯環境,經過兩天的資料查詢和除錯,終於編譯成功。

本人搭建arm交叉編譯環境,需要電腦安裝如下軟體:

1,  cgywin

2,  visual studio2013(其他版本沒有驗證)

3,  visual gdb

當然VS上也安裝了VA助手,此工具非常強悍,沒用過的可以自行查詢下載visual assist x,此工具瞬間可以讓VS好用很多倍。

有關具體的搭建方法,正在整理中,後續會出一個詳細的搭建過程,希望能夠給感興趣的朋友一定的參考。下面上一個搭建完成,執行後的截圖。有點遺憾,不能在windows下執行斷點除錯,gcc和g++編譯器編譯的程式碼是可以在vs下執行除錯的,可能arm編譯器差生的除錯資訊,visual gdb還不能翻譯,這裡可以作為程式碼編輯和編譯環境還是比SE好用很多的。

Arm9編譯器配置:


修改後的makefile


編譯結果輸出,可看到使用的是arm-unknow-linux-gnu-g++編譯器編譯成功,可生成APP、Share 庫檔案、Static 庫檔案,根據需要修改makefile即可,後續會介紹生成app、so、a檔案的方式。

軟體安裝

安裝方法,主要介紹cygwin的安裝和cygwin中arm9交叉編譯環境的建立,至於vs的安裝,visual gdb的安裝非常簡單,就不做介紹。

一 Visual gdb的安裝使用可參考如下文章:

此文章講解的方式是visualgdb+vmware的方式,此方式還需虛擬機器,比較麻煩,有興趣的可以研究下,我介紹的方式是使用cygwin。我用的版本是

VisualGDB_5.0_beta2.rar

在自己在網上很容易找到安裝包和破解檔案。

二 visual assist X介紹和使用說明,使用過vs的應該都用過

安裝包和破解方式如下:

三sygwin安裝和arm9交叉編譯的配置

Cygwin是一個在windows平臺上執行的類UNIX模擬環境,是cygnussolutions公司開發的自由軟體(該公司開發的著名工具還有eCos,不過現已被收購)。它對於學習UNIX/Linux操作環境,或者從UNIXWindows的應用程式移植,或者進行某些特殊的開發工作,尤其是使用GNU工具集在Windows上進行,非常有用。隨著嵌入式系統開發在國內日漸流行,越來越多的開發者對Cygwin產生了興趣。[1]

Cygwin 提供一個UNIX 模擬DLL以及在其上層構建的多種可以在 Linux系統中找到的軟體包,在 Windows XP SP3以上的版本提供良好的支援。Cygwin主要由Red Hat及其下屬社群負責維護。

以上是百度百科的介紹,想要深入研究,可上網搜搜,網上很多文章寫的都很不錯,下面介紹下安裝過程。

cygwin軟體的安裝請參考下文,這個說的比較詳細。


2,  選擇installfrom Internet,點選下一步。


3,  選擇安裝目錄,點選下一步。


4,  選擇本地儲存包目錄,就是儲存各種安裝包檔案的目錄,點選下一步


5,  需要聯網,如果沒有代理,直接下一步,如果有代理,請配置。


http://mirrors.163.com/cygwin/

 

7,  選擇下載包列表,空間夠網速好的話,可以全部安裝,點選all後面Default,會變成install 表示全部安裝,如果不需要,可以把Devel 變成install,其他預設,下一步,等待安裝結束。

安裝結束後,開啟cygwin,可在此終端介面進行linux的各種操作,下面介紹下arm9編譯器的安裝方式,這裡僅僅介紹最簡單的方式,如需深入瞭解可參考;

 

首先下載別人編譯好的cygwin交叉編譯其包,如果找不到就只能自己編譯了,根據自己的平臺選擇合適的交叉編譯包,我使用的是arm9的,網上很多包,下載了一個arm-linux-toolchain-cygwin的包,把包複製到cygwin目錄下的一個資料夾中解壓,解壓後記住解壓的路徑,配置環境變數,把資料夾下的bin目錄加入路徑,然後在cygwin終端裡,輸入g++直接輸入編譯器全稱  -v,我的是arm-unknown-linux-gnu-g++.exe –v 會出下編譯器資訊,則說並cygwin下交叉編譯環境配置好了,可以用此編譯器隨便編譯一個測試程式碼,看是否正常。

完成編譯環境搭建

現在開始介紹在visual  studio2013上建立arm9程式碼編輯和編譯的環境。

首先,開啟vs2013,file->new->project,在Templates選項卡下選擇visualGDB,如果沒有此選項說明visual gdb沒有安裝成功,請重新按章,在此選項卡下選擇MinGW/Cygwin Project Wizard,在下面填好專案名稱及專案儲存路徑,點選OK。

         進入New MinGW/CygwinProject後,選擇Create a new Project,隨便選擇一個型別,我們只是讓其自動產生一個GNU Makefile的模版,後續編譯選項和makefile要根據實際使用的編譯器和程式碼進行修改,點選next。


Toolchain選擇ManuallyLocate a Cygwin-based tool chain 指定到cygwin的安裝路徑,點選finished。


等待自動生成測試工程和makefile模版。


生成後的測試工程如下圖所示,包含makefile配置檔案,debug.mak /release.mak/makefile及測試程式碼arm9projtest.cpp

右鍵工程選擇proerties,進入屬性頁面,選擇NMake,可以在這裡進行相關的配置,比如進行預編譯定義,來選擇匯入的makefile配置檔案,可以預設不改,此配置下是debug模式,makefile會自動匯入debug.mak的相關定義,所以我們可以刪除release.mak檔案,反正程式碼編譯都是根據makefile來的,想編譯成debug還是release只要修改下g++引數即可,這裡我們採用預設的方式。

在Solution中右擊工程會發現多出一個visual  GDB project properties,開啟可一看到visualGDB 的很多配置選項。


    這裡注意修改一個地方,如果不修改VA是沒法用的,如果VA沒法用那是很痛苦的事情,修改如下圖所示,把Intellisense engine,修改為visual studio intellisense engine:


到此算是把交叉編譯工程框架打好了,後面進入makefile修改和生成so、a庫及應用程式的介紹。

預設生成的debug.mak配置是使用linux的g++和gcc編譯器進行編譯的,此編譯器cgywin能夠很好的支援和轉換,因此可以直接在vs2013下執行和斷點除錯,如果僅僅是開發linux程式碼,使用這種方式開發是非常方便的,可以不需要改寫任何東西,只需要通過此方式建立工程後,刪除測試程式碼,add自己的程式碼到工程裡後,直接build,即可生成執行檔案,可按F5直接執行,單步斷點除錯都可以用。

makefile修改及編譯

 debug.mak是makefile的配置檔案,此檔案通過makefile中如下語句匯入到makefile中,作為makefile特定變數的定義檔案。


下面是debug.mak檔案,應該很容易理解。

#DO NOT EDIT THIS FILE MANUALLY UNLESS YOU ABSOLUTELY NEED TO

#USE VISUALGDB PROJECT PROPERTIES DIALOG INSTEAD

# BINARYDIR編譯產生的檔案及目標檔案路徑,這裡在當前檔案的Debug目錄中

BINARYDIR := Debug

#下面是編譯器的選擇

#Toolchain

CC := D:/cygwin64/bin/gcc.exe

CXX := D:/cygwin64/bin/g++.exe

LD := $(CXX)

AR := D:/cygwin64/bin/ar.exe

OBJCOPY :=

#下面是標頭檔案包含路徑及依賴庫目錄及名稱

#Additional flags

PREPROCESSOR_MACROS := DEBUG

INCLUDE_DIRS :=

LIBRARY_DIRS :=

LIBRARY_NAMES :=

ADDITIONAL_LINKER_INPUTS :=

MACOS_FRAMEWORKS :=

LINUX_PACKAGES :=

#編譯引數的配置

CFLAGS := -ggdb -ffunction-sections-O0

CXXFLAGS := -ggdb -ffunction-sections-O0

ASFLAGS :=

LDFLAGS := -Wl,-gc-sections

COMMONFLAGS :=

這裡我們需要採用arm9的編譯器,因此只需把Toolchain按照如下方式修改:

#Toolchain

CC := D:/cygwin64/arm-cross/usr/bin/arm-unknown-linux-gnu-gcc.exe

CXX :=D:/cygwin64/arm-cross/usr/bin/arm-unknown-linux-gnu-g++.exe

LD := $(CXX)

AR := D:/cygwin64/arm-cross/usr/bin/arm-unknown-linux-gnu-ar.exe

    此處修改完後,編譯時就會使用此處定義的編譯器進行程式碼編譯。

有關編譯引數的配置,根據自己需要在addition flag中配置,我的引數配置如下:

#Additional flags

PREPROCESSOR_MACROS := NDEBUG RELEASE

INCLUDE_DIRS := ../../../include

LIBRARY_DIRS :=

LIBRARY_NAMES :=

ADDITIONAL_LINKER_INPUTS :=

MACOS_FRAMEWORKS :=

LINUX_PACKAGES :=

APPOUTPUT_PATH := ../../../output

CFLAGS := -Wall -Wextra -ffunction-sections -O3

CXXFLAGS := -Wall -Wextra-ffunction-sections -O3

ASFLAGS :=

LDFLAGS := -Wl,-gc-sections

COMMONFLAGS :=

配置完成之後,直接build工程,即可查詢編譯結果。

Makefile檔案系統會根據debug.mak的配置及原始檔的變動自動重新生成後再執行make,所以在工程中新增和刪除原始檔,不需要修改makefile,只需要重新編譯即可。

Makefile中如下定義,是定義輸出檔案檔名稱和輸出檔案型別。

TARGETNAME := arm9projtest

#TARGETTYPE can be APP, STATIC or SHARED

TARGETTYPE := APP

APP及生成可執行二進位制檔案,生成的檔案可以直接在arm板終端下執行,如上定義最終將在Debug下生成arm9projtest。

如果原始檔需要生成動態庫.so,可按照如下配置,當然程式碼中要包含對外輸出介面。

TARGETNAME := arm9projtest.so

#TARGETTYPE can be APP, STATIC or SHARED

TARGETTYPE := SHARED

靜態庫的生成,修改makefile如下:

TARGETNAME := arm9projtest.a

#TARGETTYPE can be APP, STATIC or SHARED

TARGETTYPE := STATIC


    至此arm9的開發編譯環境已經介紹完了,後面介紹下,如何快速建立工程,把以前的程式碼移植到vs上。

首先我們按照上述方式建立一個測試工程,配置好編譯環境。

然後從vs工程中刪除測試程式碼,新增我們自己的程式碼到工程中。

最後在Makefile中修改目標名稱和目標型別,重新編譯,即可生成我們自己的目標檔案。

如果開放專案比較大,有很多個工程需要建立,這裡介紹一個便捷的方式。

1,把配置好的工程資料夾複製一份,把資料夾名稱修改為新的工程名稱,例如:員工稱資料夾為arm9projtest,複製一份修改為aaa1。


2,進入aaa1,保留如下檔案其餘都刪除,這裡我用的是debug.mak,如果建立工程使用的配置為release.mak請保留release相關的檔案。

3,把檔案命中arm9projtest都改為aaa1。


4, 選擇arm9projtest.vcxproj檔案,用文字編輯器開啟,把如下內容修改一為aaa1,綠色標註的兩個地方:


5,開啟VS 工程,選擇Solution右擊->ADD->ExistingProject 選擇我們修改的工程arm9projtest.vcxproj,新增到Solution中。


刪除掉工程的原始檔,新增自己的原始檔到工程中,修改makefile目標名稱和目標型別,然後編譯即可。

下面截圖是我的整個專案工程的搭建結果:


再說下編譯依賴庫及檔案路徑的配置的地方,在debug.mak檔案中:

INCLUDE_DIRS:= ../../../include

LIBRARY_DIRS:= ../../../output

LIBRARY_NAMES:= arm9eisuv2link arm9eisuv2analysexml arm9eisuv2public

有關清理可能會報錯,清理不掉,可以在makefile中做如下修改:

clean:

#ifeq ($(USE_DEL_TO_CLEAN),1)

    #del /S /Q $(BINARYDIR)

#else

    rm -rf $(BINARYDIR)

#endif

相關推薦

visual studio搭建arm交叉編譯環境

前言 最近使用SlickEdit進行arm9應用程式的開發,感覺程式碼編輯、查詢、定義跳轉、函式引用處查詢等功能非常不好用,這可能是由於我之前都是在visual  studio(vs)上進行程式碼的開發的原因,個人感覺作為整合開發環境,VS+VA 進行程式碼的開發是最方便,

visual studio 2013搭建arm交叉編譯環境(二) cygwin等軟體的安裝及配置

   前文已經簡單介紹了要使用visualstudio來搭建arm交叉編譯環境需要安裝的軟體,本篇介紹下各種軟體的安裝方法,主要介紹cygwin的安裝和cygwin中arm9交叉編譯環境的建立,至於vs的安裝,visual gdb的安裝非常簡單,就不做介紹。 一 Visua

visual studio 2013搭建arm交叉編譯環境(四)makefile配置及編譯過程

        上篇文章已經介紹了cygwin測試工程建立和生成的方法,本文在此工程的基礎上,介紹makefile修改及編譯過程。  debug.mak是makefile的配置檔案,此檔案通過makefile中如下語句匯入到makefile中,作為makefile特定變數的

visual studio 2013搭建arm交叉編譯環境(三)Visual studio2013中Cygwin工程的建立

        前兩篇文章已經介紹了在vs上搭建arm環境的準備工作。 http://blog.csdn.net/water1209/article/details/50926869 http://blog.csdn.net/water1209/article/detail

在Fedora和Ubuntu搭建FFmpeg交叉編譯環境ARM

原文地址:https://github.com/jackyxinli/cross-compile arm-none-eabi-

Linux下搭建arm交叉編譯環境

首先需要在網上搜索arm-linux-gcc-4.3.2.tgz 傳到Linux下,執行tar xzvf arm-linux-gcc-4.3.2.tgz -C/ 解壓到根目錄下(目錄結構/usr/local/arm/4.3.2) 這樣,編譯器就解壓到了Linux系統中 然後建立

Ubuntu 16.04.1 安裝後搭建ARM交叉編譯環境編譯pjsip

1.解除安裝沒有用的軟體 sudo apt-get purge libreoffice? sudo apt-get remove vim-? sudo apt-get update sudo apt-get install vim-common

Eclipse搭建ARM交叉編譯環境

工具安裝 eclipse版本: Version: Oxygen Release (4.7.0) 安裝ARM編譯工具 Help=>Install New Software=>add Name為 GNU ARM Eclipse Plug-ins 選擇相應

用NDK在Ubuntu14.04安裝arm交叉編譯環境

之前沒有接觸過交叉編譯,後來因為在實驗室要在機器人上跑arm程式,所以就嘗試著用Ubuntu來編譯arm的程式,自己上網查方法並諮詢了很多同學同事,最終搭建成功了這個交叉編譯環境。 由於NDK中帶有一整套arm的gcc和g++編譯器,庫和檔案,所以用NDK安裝

ubuntu14.04搭建Android-arm交叉編譯環境

前面我們搭建了NDK開發環境 下面開始搭建arm交叉編譯環境 1.下載交叉編譯工具 進入到NDK根目錄:cd /home/wjt/AndroidWorkSpace/NDK_Tools/android-ndk-r10b 下載到指定路徑指令:./build/tools/make-st

docker搭建ros-indigo-arm交叉編譯環境

ROS執行環境:ARM ubuntu14.04 + ROS indigo 在arm環境下編譯ros應用程式,速度極慢,無法忍受,嘗試在x86機器上搭建docker+ros交叉編譯環境。 交叉編譯環境的搭建主要參考: 1 ARM ubuntu環境上安裝arm-indigo

一套完整的ARM交叉編譯環境搭建過程——不使用現成的工具鏈

Glibc是交叉編譯環境的執行庫。首先將glibc-2.13.tar解壓至build-tools,然後將glibc-linuxthreads-2.3.6.tar解壓至glibc原始碼所在目錄,將glibc-ports-2.13.tar.gz解壓至glibc原始碼所在目錄,並重命名為ports。進入

64位Ubuntu 16.04搭建嵌入式交叉編譯環境arm-linux-gcc過程圖解

64位Ubuntu 16.04搭建嵌入式交叉編譯環境arm-linux-gcc過程圖解,開發裸機環境之前需要先搭建其開發環境,畢竟工欲善其事必先利其器嘛。  安裝步驟 1、準備工具安裝目錄 將壓縮包arm-Linux-gcc-4.4.3.tar.gz存放在

fedora9 arm交叉編譯環境搭建

虛擬機器:fedora9 交叉編譯器:arm-Linux-gcc-4.4.3 一、參考網站 二、解壓安裝檔案: 1、解壓編譯器到相應目錄下(我這裡解壓到根目錄): [[email protected] smb]# tar -jxvf  arm-linux-gcc

在Ubentu環境下創建arm交叉編譯環境

老師 build 目錄 更新 hello 分享 date win 例程 學校:華中科技大學機械學院 作業任務:在Ubentu環境下創建arm交叉編譯環境並且在虛擬機中編譯例程 首先,利用U盤安裝windows10+Ubuntu16.04雙系統,系統剛開始安裝,需要執行以下兩

簡單搭建MIPS交叉編譯環境------新手推薦

 去如下網站下載一個工具包就OK了,o(∩_∩)o...哈哈,過程很簡單了 下載一個buildroot,這是個工具集,接下來所要做的事情就是把gcc、binutils等檔案下載下來,放在buildroot下的dl目錄下 (如果沒有這個目錄就自己建立一個就OK了)當然,你也

如何在linux下搭建mips交叉編譯環境

【參考原文】http://blog.csdn.net/gubenpeiyuan/article/details/7895469 由於要在本地編譯程式,在嵌入式系統上執行,因此需要在本地裝編譯器,目前主要需要mipsel-linux-gcc。之前一直以為可以用apt-get

在Ubuntu16.04搭建Android8.0編譯環境

1. 安裝AOSP編譯工具sudo apt install git-core sudo apt install gnupg sudo apt install flexsudo apt install bisonsudo apt install gperfsudo apt in

ALSA音訊庫的移植 ARM 交叉編譯 環境變數

alsa 是在LINUX出現比較晚的音訊處理庫,主要是針對原有的OSS的庫進行改進.效能更好,支援多個播放源等.但相應的,增加的程式設計的複雜性.   舊的oss是採用標準檔案IO介面,裝置打開採用open,聲音播錄是採用資料IO介面(read/write),裝置的引數

虛擬機器中在Ubuntu14.04下搭建QT交叉編譯環境--2014/8/14

一、Ubuntu安裝及配置 在windows上下載VMware10.0.2 並安裝,在網上找永久金鑰啟用。開啟後是中文版 在Ubuntu官網上下載ubuntu-14.04.1-desktop-i386 開啟虛擬機器,並建立新的虛擬機器,記憶體1g,硬碟20g 。虛擬磁碟檔案