明遠(yuǎn)智睿MY-IMX6L3035編譯手冊
2018年03月15日10:03myzr123
準(zhǔn)備源碼包(preparesourcecodepacakge)3.0.35版本代碼(3.0.35versioncode)u-boot源碼(u-bootsourcecode)
文件名:u-boot-2009.08--svn*.tar.xz
nameoffile:u-boot-2009.08--svn*.tar.xz
kernel源碼(kernelsourcecode)
文件名:linux-3.0.35--svn*.tar.xz
nameoffile:linux-3.0.35--svn*.tar.xz
文件名:gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2
nameoffile:gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2
配置編譯環(huán)境(configurationofcompiferenvironment)準(zhǔn)備源碼(preparesourcecode)準(zhǔn)備源碼包(preparesourcecodepackage)
1)創(chuàng)建工作目錄
createworkingdirectory
創(chuàng)建~/my-imx6作為工作目錄
create~/my-imx6asworkingdirectory
$mkdir~/my-imx6
創(chuàng)建~/my-imx6/02_source/imx_3.0.35_4.1.0作為源碼目錄
create~/my-imx6/02_source/imx_3.0.35_4.1.0assourcecodedirectory
$mkdir~/my-imx6/02_source/imx_3.0.35_4.1.0-p
創(chuàng)建~/my-imx6/03_tools作為工具目錄
create~/my-imx6/03_toolsastooldirectory
$mkdir~/my-imx6/03_tools-p
2)復(fù)制源碼包到開發(fā)主機(jī)中
copysourcecodepackagetothedevelopmenthost
這一步驟自己采取相應(yīng)的方式進(jìn)行。
doitinthisstepinyourownway。
提示:這里將網(wǎng)盤中“02_源碼”復(fù)制到Linux開發(fā)主機(jī)的“~/my-imx6/02_source/imx_3.0.35_4.1.0”,將網(wǎng)盤中“03_工具/toolchain”復(fù)制到Linux開發(fā)主機(jī)的“~/my-imx6/03_tools”。
tip:thisstepistocopy“02_sourcecode”fromnetworkdiskto“~/my-imx6/02_source/imx_3.0.35_4.1.0”indevelopmenthost,andcopy“03_tool/toolchain”to“~/my-imx6/03_tools”。indevelopmenthost
解壓源碼包(decompresssourcecodepackage)
1)解壓u-boot源碼和內(nèi)核源碼
decompressu-bootsourcecodeandkernelsourcecode
$cd~/my-imx6/02_source/imx_3.0.35_4.1.0
$tarxfu-boot-2009.08--svn*.tar.xz
$tarxflinux-3.0.35--svn*.tar.xz
2)解壓交叉編譯工具
decompresscrosscompilertool
$cd~/my-imx6/03_tools/
$tarjxfgcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.bz2
開發(fā)環(huán)境配置(developmentenvironmentconfiguration)安裝需要的包(installpackageneeded)
1)更新源列表
listofupdatedsource
$sudoapt-getupdate
更新完成后如下圖所示:
afterupdate,itwilllooklikebelow:
2)安裝aptitude包管理工具和ia32-libs
installaptitudepackagemanagementtoolandia32-libs
提示:如果編譯主機(jī)的Linux是32位的,可以跳過此步驟。
tips:ifLinuxofcompilerhostis32bit,youcanskipthisstep。
安裝aptitude包管理工具
installaptitudepackagemanagementtool
$sudoapt-get–yinstallaptitude
使用aptitude安裝ia32-libs
installia32-libswithaptitude
$sudoaptitude–yinstallia32-libs
提示:下圖為安裝過aptitude和ia32-libs后,再次執(zhí)行安裝命令的截圖。
tips:followingisthescreenshotswithre-executionofinstallationcommandafterinstallationofaptitudeandia32-libsisfinished。
3)安裝mkimage工具
installmkimagetool
$sudoapt-get-yinstalluboot-mkimage
提示:下圖為安裝過mkimage工具后,再次執(zhí)行安裝命令的截圖。
tips:followingisthescreenshotswithre-executionofinstallationcommandafterinstallationofmkimagetoolisfinished。
4)安裝ncurses-dev
installncurses-dev
說明:makemenuconfig對其具有依賴性質(zhì)。
instruction:makemenuconfigisdependentonit。
$sudoaptitude-yinstallncurses-dev
提示:下圖為安裝過ncurses-dev工具后,再次執(zhí)行安裝命令的截圖。
tips:followingisthescreenshotswithre-executionofinstallationcommandafterinstallationofncurses-devtoolisfinished。
配置MY-IMX6編譯的環(huán)境變量(configureenvironmentvariablesofMY-IMX6compilation)
1)將平臺信息寫入到一個(gè)新的配置文件
writeplatforminformationtoanewconfiguredfile
$echo“exportARCH=arm”》~/my-imx6/03_tools/myimx6_3035_build_env
2)將交叉編譯工具鏈路徑寫入到配置文件
writecompilertoolchainpathtoconfiguredfile
進(jìn)入交叉編譯工具目錄
entercrosscompilertooldirectory
$cd~/my-imx6/03_tools/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/
將路徑寫入到配置文件
writepathtoconfiguredfile
$sed-i“\$aIMX6_GCC462_PATH=$PWD”~/my-imx6/03_tools/myimx6_3035_build_env
將交叉編譯工具寫入到配置文件
writecrosscompilertooltoconfiguredfile
$sed-i“\$aexportCROSS_COMPILE=\$IMX6_GCC462_PATH/arm-none-linux-gnueabi-”~/my-imx6/03_tools/myimx6_3035_build_env
3)查看配置文件
viewconfiguredfile
$cat~/my-imx6/03_tools/myimx6_3035_build_env
注意:如果在某一步操作錯誤,則需要刪除~/my-imx6/03_tools/myimx6_3035_build_env文件,并重新按照本小節(jié)操作。
note:ifanerroroccursinanystep,needtodelect~/my-imx6/03_tools/myimx6_3035_build_env,andoperateagainallstepsofthissegment。
編譯u-boot(compileu-boot)進(jìn)入u-boot源碼目錄(enteru-bootsourcecodedirectory)
$cd~/my-imx6/02_source/imx_3.0.35_4.1.0/u-boot-2009.08/
使配置文件生效(validateconfiguredfile)
執(zhí)行source命令
executesourcecommand
$source~/my-imx6/03_tools/myimx6_3035_build_env
查看編譯配置
viewcompilerconfiguration
$echo$ARCH
$echo$CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被設(shè)置
tips:youcanseethatARCH和CROSS_COMPILEisconfigured
驗(yàn)證交叉編譯工具配置
verifycrosscompilertoolconfiguration
$${CROSS_COMPILE}gcc–v
提示:執(zhí)行命令后可以看到終端顯示出交叉編譯工具的版本信息。如下圖:
tips:youcanseeversioninformationofcrosscompilertoolshownonterminalafterexecutionofcommand.asbelow:
清除u-boot配置(removeu-bootconfiguration)
$makedistclean
u-boot配置(u-bootconfiguration)
評估板及對應(yīng)的u-boot編譯配置:
evaluationboardanditscorrespondingu-bootcompilerconfiguration:
評估板主型號
(evaluationboardmainmodel)
CPU類型-內(nèi)存容量
(CPUtype-memorycapacity)
對應(yīng)的u-boot配置
(correspondingu-bootconfiguration)
MY-IMX6-EK2006Q(四核)-1G
(6Q(quad.core)-1G)myimx6ek200_6q_config
6Q(四核)-2G
(6Q(quadcore)-2G)myimx6ek200_6q_2g_config
6U(雙核簡化)-1G
(6U(dualcoretile)-1G)myimx6ek200_6u_config
6S(單核)-512M
(6S(singlecore)-512M)myimx6ek200_6s_config
MY-IMX6-EK3146Q(四核)-1G
(6Q(quad.core)-1G)myimx6ek314_6q_config
6Q(四核)-2G
(6Q(quad.core)-2G)myimx6ek314_6q_2g_config
6U(雙核簡化)-1G
(6U(dualcoretile)-1G)myimx6ek314_6u_config
6S(單核)-512M
(6S(singlecore)-512M)myimx6ek314_6s_config
MYIMX6EK200-6Qxx-1G配置示例:
MYIMX6EK200-6Qxx-1Gconfigurationexample:
$makemyimx6ek200_6q_config
編譯(compilation)
執(zhí)行編譯
executecompilation
$make
提示:這里為了提高編譯速度,在make后面加了“-j4”。這里編譯的Linux主機(jī)是雙核4線程的,所以“-j”后面用了4,也就是采用4線程編譯?!?j”后面的數(shù)字可以根據(jù)系統(tǒng)資源分配,但是不應(yīng)該超過編譯主機(jī)最大支持的線程數(shù)。
Tips:Tospeedupthecompilation,add“-j4”aftermake.TheLinuxhostusedtocompileisdual-core,4threads.So“-j”isfollowedby4,whichtakes4threadstocompile.Thenumberbehind“-j”isallocatedbasedonsystemresources,butItshouldnotexceedthemaximumthreadsthehostsupport。
編譯完成
completecompilation
提示:u-boot編譯過程大概需要幾分鐘時(shí)間。
tips:u-bootcompilationprocesswilltakeafewminustesorso。
目標(biāo)文件(targetfile)
編譯完成后通過ls命令即可看到編譯得到的目標(biāo)文件u-boot.bin
youcangetthecompiledfileu-boot.binwithlscommandaftercompilation
$ls
編譯內(nèi)核(compilekernel)進(jìn)入內(nèi)核源碼目錄(enterkernelsourcedirectory)
$cd~/my-imx6/02_source/imx_3.0.35_4.1.0/linux-3.0.35/
使配置文件生效(validateconfiguredfile)
執(zhí)行source命令
executesourcecommand
$source~/my-imx6/03_tools/myimx6_3035_build_env
查看編譯配置
viewcompilerconfiguration
$echo$ARCH
$echo$CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被設(shè)置
tips:youcanseethatARCH和CROSS_COMPILEisconfigured
驗(yàn)證交叉編譯工具配置
verifycrosscompilertoolconfiguration
$${CROSS_COMPILE}gcc–v
提示:執(zhí)行命令后可以看到終端顯示出交叉編譯工具的版本信息。如下圖:
tips:youcanseeversioninformationofcrosscompilertoolshownonterminalafterexecutionofcommand.asbelow:
準(zhǔn)備配置內(nèi)核(prepareforkernelconfiguration)
清除內(nèi)核配置
removekernelconfiguration
$makedistclean
生成.config文件
generated.configfile
說明:MY-IMX6-EK200系列評估板及MY-IMX6-EK314系列評估板使用的配置文件是myimx6_defconfig
instructions:configurationfilesusedforMY-IMX6-EK200seiresofevaluationboardandMY-IMX6-EK314seriesofevaluationboardismyimx6_defconfig
$makemyimx6_defconfig
編譯內(nèi)核(compilekernel)
編譯uImage
compileuImage
$makeuImage
說明:截圖中使用了4線程編譯。
instruction:4threadscompilationisusedinthescreenshots。
編譯完成
completecompilation
目標(biāo)文件
targetfile
arch/arm/boot/uImage即為編譯得到的目標(biāo)文件,使用ls命令可查看文件信息。
arch/arm/boot/uImageisthetargetfilethroughcompilation,youcanviewthefileinformationwithlscommand。
$lsarch/arm/boot/uImage–la
編譯模塊(compilemodule)
編譯
compile
$make
說明:截圖中使用了4線程編譯。
instruction:4threadscompilationisusedinthescreenshots。
編譯完成
completecompilation
目標(biāo)文件
targetfile
編譯完成后各模塊的.ko文件位于代碼所在的目錄,通過find命令可以找出編譯完成的模塊,參考命令如下:
.kofileofeachmoduleisinthedirectorywherecodeislocatedaftercompilation,youcanfindthemodulecompiledwithfindcommandaftercompilation,referingcommandasbelow:
$find-name*.ko
Linux應(yīng)用程序編譯(Linuxapplicationcompilation)編寫應(yīng)用程序(writeapplication)
1)創(chuàng)建應(yīng)用程序目錄
createapplicationdirectory
$mkdir~/my-imx6/02_source/application/-p
$cd~/my-imx6/02_source/application/
2)編寫應(yīng)用程序(這里以hello.c為例)
創(chuàng)建hello.c文件寫入以下代碼并保存:
include
intmain(intargc,char**argv)
{
printf(“Hello,MYZR!\n”);
return;
}
3)查看代碼
$cathello.c
使編譯配置文件生效(validatecompilerconfiguredfile)
執(zhí)行source命令
$source~/my-imx6/03_tools/myimx6_3035_build_env
查看編譯配置
$echo$ARCH
$echo$CROSS_COMPILE
提示:可看到ARCH和CROSS_COMPILE被設(shè)置
驗(yàn)證交叉編譯工具配置
$${CROSS_COMPILE}gcc–v
提示:執(zhí)行命令后可以看到終端顯示出交叉編譯工具的版本信息。如下圖:
編譯應(yīng)用程序(compileapplication)
2)編譯
$${CROSS_COMPILE}gcchello.c-ohello.out
注意:上面的命令有包含“$”號,即“${CROSS_COMPILE}gcc”,是引用我們source時(shí)產(chǎn)生的環(huán)境變量。
3)查看目標(biāo)文件類型
$filehello.out
可以看到目標(biāo)文件hello.out的屬性。
文件系統(tǒng)(filesystem)文件系統(tǒng)說明(filesysteminstruction)
文件系統(tǒng)包位于網(wǎng)盤對應(yīng)的鏡像文件夾中。支持的文件系統(tǒng)類型及下載方式可參照《MY-IMX6燒錄指導(dǎo)》。
解壓文件系統(tǒng)到編譯主機(jī)(decompressfilesystemtocompilerhost)
1)創(chuàng)建文件系統(tǒng)的目錄并進(jìn)入
$mkdir~/my-imx6/04_rootfs/-p
$cd~/my-imx6/04_rootfs/
2)將文件系統(tǒng)復(fù)制到~/my-imx6/04_rootfs/目錄
這一步驟自己采取相應(yīng)的方式進(jìn)行
3)解壓文件系統(tǒng)到指定目錄
$mkdirrootfs
$sudotarjxfrootfs-linux.tar.bz2-Crootfs
添加應(yīng)用到文件系統(tǒng)(addapplicationtofilesystem)
$cp~/my-imx6/02_source/application/hello.outrootfs/app_test/
5)重新打包文件系統(tǒng)
$rm-rfrootfs-linux.tar.bz2
$cdrootfs/
$sudotarcjf。。/rootfs-linux.tar.bz2*
添加模塊到文件系統(tǒng)(addmoduletofilesystem)
準(zhǔn)備需要模塊的.ko文件,其它請參照“添加應(yīng)用到文件系統(tǒng)”。
發(fā)布評論請先 登錄
相關(guān)推薦
評論