當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程軟體 » armlinux驅動編譯方法

armlinux驅動編譯方法-九游会j9娱乐平台

發布時間: 2024-01-17 05:17:54

① arm linux gcc怎麼編譯

1
gcc
-g
test_gdb.c
-o
test_gdb
只有加入選項-g才能被gdb調試。
使用quit命令,輸入:
quit
即可。
list:顯示10源代碼,再次輸入該命令顯示接下來的10行。
list1,10:顯示從第一行到第10行的代碼。
在gdb中最簡單的設置方式是:break
行號
在這一行設置斷點。比如break9
會在代碼的第9行設置斷點。當程序執行到第9行會自動暫停,此時,第9行代碼還未執行。
你也可以使用:break
函數名
的方式在某個函數處設置斷點,程序運行到這個函數內的第一條語句處會自動暫停。
使用命令:clear
行號
即可刪除。
兩種命令:next和step。兩者均可以一句一句的查看語句。但不同的是,next命令將函數調用看作一條語句,而step則會進入函數,一步步的執行函數內的代碼。
輸入命令:continue。它可以讓程序繼續運行,直到程序運行完畢或者遇到下一個斷點為止。
11.當程序在斷點處暫停執行時,如何查看當前變數的值?
使用print命令。
這時我總結的linux
gdb,希望對你有幫助

② 如何編譯armlinux的go

golang也就是go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後google強大靠山什麼的就不多說了。golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布arm平台的二進制安裝包。arm平台沒辦法直接從官網下載二進制安裝包來安裝,好在golang是支持多平台並且開源的語言,因此可以通過直接在arm平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取golang源代碼、設置golang編譯環境變數、編譯、配置golang行環境變數等步驟。

註:本文選用樹莓派做測試,因為樹莓派是基於arm平台的。

1、編譯工具配置

據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用c編譯工具的。因此,首先要配置好c編譯工具:

1.1在ubuntu或debian平台上可以使用sudoapt-getinstallgcclibc6-dev命令安裝,樹莓派的raspbian系統是基於debian修改的,所以可以使用這種方法安裝。

1.2在redhat或centos6平台上可以使用sudoyuminstallgcclibc-devel命令安裝。

安裝完成後可以輸入gcc--version命令驗證是否成功安裝。

2、獲取golang源代碼

2.1直接從官網下載源代碼壓縮包。

golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:/golang/go1.4.1.src.tar.gz

2.2使用git工具獲取。

golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。

2.2.1首先確認arm平台上已經安裝了git工具,可以使用git--version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:download/linux

2.2.2克隆遠程golang的git倉庫到本地

在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:

gitclone/go

大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:

gitclone/golang/go.git

視網路情況,下載可能需要不少時間。我2m的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆==

下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cdgo命令進入該目錄。

執行下面命令檢出go1.4.1版本的源代碼,因為現在汪敏指已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:

gitcheckoutgo1.4.1

至此,最新1.4.1發行版的源代碼獲取完畢

3、設置golang的編譯環境變數

主要有goroot、goos、goarch、goarm四個環境變數需要設置,先解釋四個環境變數的意義。

3.1goroot

主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變數,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本困配運行時的父目錄作為goroot的值。為了保險起見,可以直接設拿芹置為go目錄的路徑。

3.2goos和goarch

分別代表編譯的目標系統和平台,可選值如下:

goosgoarch

darwin386

darwinamd64

dragonfly386

dragonflyamd64

freebsd386

freebsdamd64

freebsdarm

linux386

linuxamd64

linuxarm

netbsd386

netbsdamd64

netbsdarm

openbsd386

openbsdamd64

plan9386

plan9amd64

solarisamd64

windows386

windowsamd64

需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的raspbian是linux系統,所以這些goos設置為linux,goarch設置為arm。

3.3goarm

表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。

總結下來,在樹莓派上設置golang的編譯環境變數,可編輯$home/.bashrc文件,在末尾添加下面內容:

exportgoroot=你的go目錄路徑

exportgoos=linux

exportgoarch=arm

編輯完後保存,執行source~/.bashrc命令讓修改生效。

4、編譯源代碼

環境變數配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬體情況不同,編譯耗費的時間不同。在我的b型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環境變數

編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到path環境變數中。同樣編輯~/.bashrc文件,因為前面設置過goroot環境變數指向go目錄了,所以只需要在末尾加上

exportpath=$path:$goroot/bin

保存後同樣執行source~/.bashrc命令讓環境變數生效。

至此,golang源代碼編譯安裝成功。執行goversion應該就能看到當前golang的版本信息,表示編譯安裝成功。


③ 如何建立linux下的arm交叉編譯環境

首先安裝交叉編譯器,網路「arm-linux-gcc」就可以一個編譯器壓縮包。
把壓縮包放到linux系統中,解壓,這樣就算安裝好了交叉編譯器。
設置編譯器環境變數,具體方式網路。如打開 /etc/bash.bashrc,添加剛才安裝的編譯器路徑 export path=/home/。。。/4.4.3/bin:$path。這樣是為了方便使用,用arm-linux-gcc即可,不然既要帶全路徑/home//bin/arm-linux-gcc,這樣不方便使用。
編譯c文件。和gcc編譯相似,把gcc用arm-linu-gcc代替就是了。編譯出來的就可以放到arm上運行了。

④ 如何編譯可以在windows下運行的帶有python支持的arm linux gdb

做這件事情的目的是為了在qtcreator里調試arm linux程序的時候,能看清楚qstring、qlist這些qt特有的對象的內容,而不是一個完全看不懂的結構體。
目前(2014年8月)linaro、codesourcery的gcc工具鏈里的gdb都不支持python。想知道你用的gdb支持不支持,試一試就行,這樣表示不支持:
(gdb) python
>print 'hello gdb!'
>(按ctrl d)python scripting is not supported in this of gdb.
這樣表示支持:
(gdb) python
>print 'hello gdb!'
>(按ctrl d)hello gdb!
這件事情乍一看也很簡單,只要把gdb源碼下載下來,然後再配置,打開python支持就行了。實際上會遇到的問題是,在mingw下,又要與「\」和「:」這兩個windows路徑里的刺頭斗爭了。我覺得我之前挺傻,編譯mingw下qt的時候,就去硬磕源碼和configure腳本去了。這次gdb的configure是自動生成的,不是給人看的,configure.ac看起來也很費勁,根本磕不下去,於是我換了個思路,在ubuntu下交叉編譯吧,sudo apt-get install mingw32,這是ubuntu下的mingw交叉編譯器。
然後是依賴,這樣的gdb要依賴expat和python的開發版本。如果是ubuntu底下直接編譯,apt-cache search一下他們的開發版本,然後sudo apt-get install一下就好了;給mingw交叉編譯就麻煩了。先說expat,這個好辦,把http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz下載下來,然後:
./configure --prefix=[安裝目錄,如/home/c/mingw-gdb/expat] --host=i586-mingw32msvc
make
make install
會提示一些警告,無視即可。
python就無語了,目前的gdb貌似最高支持python 2.7,而2.7版本的python本身不支持mingw…… 好在有高手做了patch,也寫了說明,可以參考這文章:http://mdqinc.com/blog/2011/10/cross-compiling-python-for-windows-with-mingw32/
但是,就算這樣,編譯也充滿挑戰,要修復很多問題,出來的python還少「nt」模塊。就在我覺得沒辦法的時候,突然發現windows版qt提供的mingw居然內置了python開發包,位置在tools/mingw48_32/opt,趕緊把它拷貝到linux下,比如/home/c/mingw-gdb/python。當然,你也必須確保ubuntu下有可用的python。
然後,給gdb打一個補丁:
--- gdb-7.8/gdb/configure 2014-07-29 20:37:42.000000000 0800
gdb-7.8-old/gdb/configure 2014-08-30 00:08:27.122042706 0800
@@ -8263,21 8263,22 @@
# we have a python program to use, but it may be too old.
# don't flag an error for --with-python=auto (the default).
have_python_config=yes
- python_includes=`${python_prog} ${srcdir}/python/python-config.py --includes`
python_config_tool=`echo ${python_prog} | sed "s#python.exe#python-config#g"`
python_includes=`${python_config_tool} --includes`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
as_fn_error "failure running python-config --includes" "$lineno" 5
fi
fi
- python_libs=`${python_prog} ${srcdir}/python/python-config.py --ldflags`
python_libs=`${python_config_tool} --ldflags`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
as_fn_error "failure running python-config --ldflags" "$lineno" 5
fi
fi
- python_prefix=`${python_prog} ${srcdir}/python/python-config.py --exec-prefix`
python_prefix=`${python_config_tool} --exec-prefix`
if test $? != 0; then
have_python_config=failed
if test "${with_python}" != auto; then
@@ -8343,12 8344,12 @@
return 0;
}
_aceof
-if ac_fn_c_try_link "$lineno"; then :
#if ac_fn_c_try_link "$lineno"; then :
have_libpython=${version}
found_usable_python=yes
python_cppflags=$new_cppflags
python_libs=$new_libs
-fi
#fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
cppflags=$save_cppflags
這個補丁的目的是強制為檢測到python。
然後給拷貝到linux下的python開發包打一個補丁:
--- python-old/bin/python-config 2013-04-18 02:43:01.000000000 0800
python/bin/python-config 2014-08-30 00:53:16.630060288 0800
@@ -1,4 1,4 @@
-#!/temp/x32-480-posix-dwarf-r2/mingw32/opt/bin/python2.7.exe
#!/usr/bin/python

import sys
import os
@@ -31,26 31,23 @@

for opt in opt_flags:
if opt == '--prefix':
- print sysconfig.prefix
print '../python'

elif opt == '--exec-prefix':
- print sysconfig.exec_prefix
print '../python'

elif opt in ('--includes', '--cflags'):
- flags = ['-i' sysconfig.get_python_inc(),
- '-i' sysconfig.get_python_inc(plat_specific=true)]
flags = ['-i' os.path.split(os.path.realpath(__file__))[0] '/../include/python2.7']
if opt == '--cflags':
- flags.extend(getvar('cflags').split())
flags = ['-fno-strict-aliasing -dms_win32 -dms_windows -dhave_usable_wchar_t -dndebug -g -fwrapv -o3 -wall -wstrict-prototypes']
print ' '.join(flags)

elif opt in ('--libs', '--ldflags'):
- libs = getvar('libs').split() getvar('syslibs').split()
- libs.append('-lpython' pyver)
libs = ['-lm -lpython2.7 -wl,--out-implib=libpython2.7.dll.a']
# add the prefix/lib/pythonx.y/config dir, but only if there is no
# shared library in prefix/lib/.
if opt == '--ldflags':
if not getvar('py_enable_shared'):
- libs.insert(0, '-l' getvar('libpl'))
- libs.extend(getvar('linkforshared').split())
libs.insert(0, '-l' os.path.split(os.path.realpath(__file__))[0] '/../lib/python2.7/config')
print ' '.join(libs)

因為linux下是無法運行開發包中的python.exe的,所以這個補丁借用了ubuntu的python。裡面的cflags和ldflags都是在windows底下運行原始python-config獲得的。prefix和exec-prefix設成「../python」,可以在編譯完以後,把python開發包拷貝到gdb安裝目錄裡面的python子目錄,這樣運行gdb的時候就不需要設定pythonhome環境變數了。
最後一個事情,確保你的linux下有arm交叉編譯器,我的是arm-linux-gnueabihf,是啥target就寫啥。
准備工作做完了,開始配置和編譯:
./configure --with-expat --host=i586-mingw32msvc --target=arm-linux-gnueabihf --with-libexpat-prefix=[expat安裝位置] --with-python=[python開發包安裝位置/bin/python.exe]
make
make destdir=[gdb安裝位置] install
然後把gdb安裝位置下面的所有文件拷貝到windows下,再把python開發包拷貝到同目錄下的python子目錄,大功告成。
如果提示沒找到libpython2.7.dll,那就把gdb安裝目錄的python/bin下的拷貝到bin下。
如果發現生成的exe文件太大了,那就strip一下。
2015年9月12日追加:
在windows下調試時,一般會提示說載入不了共享庫,讓你用"set sysroot"或"set solib-search-path"之類設定路徑的。這個問題可以通過.gdbinit文件,用上面這兩條命令來設定路徑解決,如果想一勞永逸,可以在編譯的時候加上host_configargs環境變數來解決這個問題:
host_configargs=--with-sysroot=e:\mingw\opt\sysroot-arm ./configure ...
或者
export host_configargs=--with-sysroot=e:\mingw\opt\sysroot-arm
./configure ...

後面的路徑是放在windows下的sysroot的位置。

⑤ 如何編譯arm版本linux qt4.5

編譯安裝內核 下載並解壓內核 解壓內核:tar xf linux-2.6.xx.tar.xz 定製內核:make menuconfig 參見makefile menuconfig過程講解 編譯內核和模塊:make 生成內核模塊和vmlinuz,initrd.img,symtem.map文件 安裝內核和模塊:sudo make moles_install install 復制模塊文件到/lib/moles目錄下、復制config,vmlinuz,initrd.img,symtem.map文件到/boot目錄、更新grub 其他命令: make mrprobe:命令的作用是在每次配置並重新編譯內核前需要先執行「make mrproper」命令清理源代碼樹,包括過去曾經配置的內核配置文件「.config」都將被清除。即進行新的編譯工作時將原來老的配置文件給刪除到,以免影響新的內核編譯。 make dep:生成內核功能間的依賴關系,為編譯內核做好准備。 幾個重要的linux內核文件介紹 config 使用make menuconfig 生成的內核配置文件,決定將內核的各個功能系統編譯進內核還是編譯為模塊還是不編譯。 vmlinuz 和 vmlinux vmlinuz是可引導的、壓縮的內核,「vm」代表「virtual memory」。linux 支持虛擬內存,不像老的操作系統比如dos有640kb內存的限制,linux能夠使用硬碟空間作為虛擬內存,因此得名「vm」。

熱點內容
發布:2024-01-20 01:08:21 瀏覽:525
發布:2024-01-20 01:07:17 瀏覽:250
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
网站地图