各位老铁们好,相信很多人对bitbake安装都不是特别的了解,因此呢,今天就来为大家分享下关于bitbake安装以及bitbucket安装的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
如何在虚拟机中运行 YOCTO LINUX 操作系统如何安装yoctoYocto编译杰发或MTK的linux或android时的几个问题python 比较好用的库有哪些如何在虚拟机中运行 YOCTO LINUX 操作系统本文将为大家介绍如何创建Yocto*的可运行映像,如何在基础软件模拟器QEMU中测试该映像,以及如何在管理程序(比如Windows上的MicrosoftHyper-V)中运行该映像。
操作本教程的前提条件
Debian/Ubuntu(已经过Debian8.2amd64的测试)互联网连接磁盘提供至少100GB可用空间
构建机器的前期准备工作
以根身份(或通过"sudo")运行以下命令
1#apt-getinstallwgetgit-coreunzipmakegccg++build-essentialsubversionsedautoconfautomaketexi2htmltexinfocoreutilsdiffstatpython-pysqlite2docbook-utilslibsdl1.2-devlibxml-parser-perllibgl1-mesa-devlibglu1-mesa-devxsltprocdesktop-file-utilschrpathgrofflibtoolxtermgawkfop
注1:上述命令是否成功运行取决于大家使用的Ubuntu/Debian版本。最后,如欲解决程序包的依赖关系,可以运行"aptitude",强行安装正确版本的程序包(比如,"aptitudeinstalllibsdl1.2-dev")。
注2:对于其他Linux-distribution来说,比如RadHat、CentOS、Fedora、SuSe、Gentoo等......建议通过正确的package-manager(例如zypper、yum等)检查上述程序包的相应版本。
第一步:设置工作文件夹
以没有特权的普通用户(没有根身份)
1#cd
2#mkdiryocto-2.0
3#cdyocto-2.0
4#wgethttp://downloads.yoctoproject.org/releases/yocto/yocto-2.0/poky-jethro-14.0.0.tar.bz2
5#tarxvjfpoky-jethro-14.0.0.tar.bz2
6#cdpoky-jethro-14.0.0/
注3:可以点击以下链接https://www.yoctoproject.org/downloads,选择Yocto版本的其他开发分支。本教程将使用当前最新版本"JoctoPoky2.0.14.0.0codenameJethro"。
注4:如欲获取最新版Yocto资源,可以获得主开发分支,需要将wget操作替换为以下内容:
1#gitclonegit://git.yoctoproject.org/poky.git
2#cdpoky
注5:还可以通过代号选择特定的开发分支。例如:
1#gitclone-bjethrogit://git.yoctoproject.org/poky.git
第二步:设置系统shell的环境变量
Yocto开发人员提供了一个非常易用的脚本。
1#../oe-init-build-env
脚本运行后,如果正常,您的位置将变成一个构建子目录,它将成为您的新工作区。类似于/home/<youruser>/yocto-2.0/poky-jethro-14.0.0/build/。
第三步:设置bitbake
执行之前的脚本,会创建一个conf/local.conf文件。
该配置文件需要设置Yocto的构建引擎bitbake(Yocto项目的核心组件)。
采用首选文本编辑器编辑bitbake配置文件。本教程将使用nano—面向类似Unix的环境的简单命令-行-界面文本编辑器,如下所示:
1#cdconf/
2#nanolocal.conf
取消下列行的注释
1DL_DIR?="${TOPDIR}/downloads"
2SSTATE_DIR?="${TOPDIR}/sstate-cache"
3TMPDIR?="${TOPDIR}/tmp"
4SDKMACHINE?="i686"
建议为该映像构建所有其他的可用特性。最终的映像将特别大(每个大约8GB),但绝对完整,可满足所有开发需求。
1EXTRA_IMAGE_FEATURES="dbg-pkgsdev-pkgsptest-pkgstools-sdktools-debugeclipse-debugtools-profiletools-testappsdebug-tweaks"
现在,通过CTRL+X键组合保存对文件local.conf作出的所有更改。
然后:
1#cd..
2#hob
现在,Hob实例(面向BitBake、基于GTK2的图形用户界面)将启动,检查构建系统的准确程度。
现在在下拉菜单中选择qemux86机器。
等Hob完成BitBake方案解析并生成依赖关系树。然后选择目标映像,以从上述菜单的"selectanimagerecipe"开始构建。在本示例中,我们选择不包含GUI的完整核心映像:core-image-full-cmdline。
现在点击"AdvancedConfiguration"。
如欲构建最新的稳定版,在"Imagetypes"面板中保留"Distro"菜单中的poky。然后在"Imagetypes"字段中选择所需的格式:通常我选择".iso"、".vdi"和".vmdk",它们最好用。
请在"Output"面板中选择能够满足要求的最佳选项。建议为映像增加4GB可用存储,以放置面向i686架构的SDK(如果您使用Edison开发板)。另外,我认为将"deb"设置为面向根文件系统的打包格式非常有用。因此,如下所示:
好的,保存。现在,您已准备好构建映像!点击"Buildimage"按钮!
Hob将启动bitbakecore-image-full-cmdline示例,以及您钟爱的设置。
注7:这一流程将花费很长时间构建最终映像。不过,根据您主机功能的不同,可以更改用于在"BitBakeparallelthreads"和"Makeparallelthreads"上执行构建操作的处理器内核的数量。可从Hobsettings窗口更改这些变量:
注8:您可以借助Hob确定将要构建的映像包含哪些包。为此,可以在开始构建映像之前选择"Editimagerecipe"。
如何安装yocto1.Yocto简介:
Yocto是一个开源社区,它通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM,PPC,MIPS,x86(32&64bit)硬件体系架构。
2.Yocto定制准备工作
(1)确保电脑能联网,并且有100G的空闲,电脑配置不低于4核
(2)获取yocto脚本:$gitclonegit://git.yoctoproject.org/poky
(3)获取硬件相关层:$gitclonegit://git.yoctoproject.org/meta-intel.git
(4)关于yocto的帮助:http://www.yoctoproject.org/documentation
3.开始搭建环境
(1)$sourcepoky/oe-init-build-envxxx
xxx$cdconf
xxx/conf$vimbblayers.conf
#LAYER_CONF_VERSIONisincreasedeachtimebuild/conf/bblayers.conf
#changesincompatibly
LCONF_VERSION="4"
BBFILES?=""
BBLAYERS?="\
/hda5/hmi/x86/yocto/poky/meta\
/hda5/hmi/x86/yocto/poky/meta-yocto\
/hda5/hmi/x86/yocto/poky/meta-intel\
/hda5/hmi/x86/yocto/poky/meta-intel/meta-crownbay\
(2)修改local.conf
xxx/conf$vimlocal.conf
#MACHINE??="qemux86"
MACHINE??="crownbay"
4.开始编译
注:(官方下载的只是脚本,yocto一边下载一边编译所以很慢而且还受资源下载限制和电脑配置,下载的文件在工作目录中的downloads中,第一次下载后保存好downloads以后就方便了)
(1)配置内核
xxx$bitbakelinux_yocto-cmenuconfig
(2)定制微型yocto
xxx$bitbakecore-image-minimal
(3)定制桌面型yocto
xxx$bitbakecoure-image-sato
(4)hobconfig
xxx$hob
可以在图形化界面中方便的定制系统。
Yocto编译杰发或MTK的linux或android时的几个问题编译问题1(audiomanager_7.0.bb的do_configure报错):
错误:CMakeErroratPlugins/PluginCommandInterfaceCAPI/cmake/CommonAPI.cmake:352(message):
FailedtogeneratefilesfromFIDL:
手动执行一下:
$commonapi-generator-linux-x86-llverbose-skDefault-d./data/linux/hz_rs28_bm/sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/audiomanager/7.0-r1/audiomanager-7.0/Plugins/PluginCommandInterfaceCAPI/fidl/CommandInterface.fidl
-bash:/data/linux/hz_rs28_bm/sources/src/build/tools/commonapi_tool/commonapi-generator/commonapi-generator-linux-x86:/lib/ld-linux.so.2:badELFinterpreter:Nosuchfileordirectory
解决(需要安装32位的glibc库和32位java jre环境):
$sudoyuminstallglibc.i686
$sudoyuminstalljava-1.8.0-openjdk.i686
$sudoln-s/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.i386/jre/bin/java/bin/java
$java-version (保证是32位的java)
编译问题2(perl_5.20.0.bb的do_package报错):
错误:ERROR:objcopyfailedwithexitcode256(cmdwas‘arm-poky-linux-gnueabi-objcopy’–only-keep-debug
…generate_uudmap:Fileformatnotrecognized
解决(tar在1.29版本之后需要exclude在路径的前面):
sources/meta/poky/bitbake/lib/bb/fetch2/bzr.py
tar_flags=“–exclude‘.bzr’–exclude‘.bzrtags'”
修改成:
tar_flags=“–exclude=’.bzr’–exclude=’.bzrtags'”
sources/meta/poky/bitbake/lib/bb/fetch2/cvs.py
tar_flags=“–exclude‘CVS'”
修改成:
tar_flags=“–exclude=’CVS'”
sources/meta/poky/bitbake/lib/bb/fetch2/repo.py
tar_flags=“–exclude‘.repo’–exclude‘.git'”
修改成:
tar_flags=“–exclude=’.repo’–exclude=’.git'”
sources/meta/poky/bitbake/lib/bb/fetch2/svn.py
tar_flags=“–exclude‘.svn'”
修改成:
tar_flags=“–exclude=’.svn'”
sources/meta/poky/meta/recipes-devtools/quilt/quilt-0.63.inc
tar-cf–bin/–exclude\*.in|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-cf–compat/–exclude\*.in|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-cf–quilt/–exclude\*.in|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-cf–test/–excludemail.test–excludedelete.test|(cd${D}${PTEST_PATH}&&tar-xf–)
修改成:
tar-c–exclude=\*.inbin/|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-c–exclude=\*.incompat/|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-c–exclude=\*.inquilt/|(cd${D}${PTEST_PATH}&&tar-xf–)
tar-c–exclude=mail.test–exclude=delete.testtest/|(cd${D}${PTEST_PATH}&&tar-xf–&&chmod777test)
sources/meta/poky/meta/recipes-extended/sed/sed-4.2.2/sed-add-ptest.patch
+ cd$(BUILDDIR);tar-cf–$(TESTDIR)–exclude*.o|(cd$(DESTDIR)&&tar-xf–)
修改成:
+ cd$(BUILDDIR);tar-c–exclude=*.o$(TESTDIR)|(cd$(DESTDIR)&&tar-xf–)
sources/meta/poky/meta/recipes-support/attr/acl.inc
tar-cf–test/–excludenfs|(cd${D}${PTEST_PATH}&&tar-xf–)
修改成:
tar-c–exclude=nfstest/|(cd${D}${PTEST_PATH}&&tar-xf–)
sources/meta/poky/meta/recipes-support/attr/attr.inc
tar-cf–test/–excludeext|(cd${D}${PTEST_PATH}&&tar-xf–)
修改成:
tar-c–exclude=exttest/|(cd${D}${PTEST_PATH}&&tar-xf–)
sources/meta/poky/meta/recipes-devtools/perl/perl-ptest.inc
tar-cf–*–exclude\*.o–excludelibperl.so–excludeMakefile–excludemakefile–excludehostperl\
–excludeminiperl–excludegenerate_uudmap–excludepatches|(cd${D}${PTEST_PATH}&&tar-xf–)
修改成:
tar-c–exclude=\*.o–exclude=libperl.so–exclude=Makefile–exclude=makefile–exclude=hostperl\
–exclude=miniperl–exclude=generate_uudmap–exclude=patches*|(cd${D}${PTEST_PATH}&&tar-x)
编译问题3(libunwind_1.1.bb的do_compile报错):
错误:make[1]:latex2man:Commandnotfound
解决:
$sudoyuminstalltexlive-tetex
$sudorpm-ivh~/latex2man-1.18-2.noarch.rpm
编译问题3(qt5-app_1.0.bb的do_compile报错):
错误(有一批类似的错误):ld:cannotfind-lgtest
解决:
$viatc_linux/application/btate/btate.pro
equals(MY_BUILD_SYSTEM,atc){
LIBS+=-L$(DA_LIBDIR)/lib-lgtest-lpthread-lbluetoothclient-lglobalbus-lappobj-lapputils
}else{
LIBS+=-L$(DA_TOP)/application/lib-L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/atc-binarys/1.0-r0/image/usr/lib-lgtest-lpthread-lbluetoothclient-l
globalbus-lappobj-lapputils
}
$viatc_linux/application/gps/gps_bin.pro
equals(MY_BUILD_SYSTEM,atc){
LIBS+=-L$(DA_LIBDIR)/lib -lapputils -lglobalbus-lappobj-lgps
}else{
LIBS+=-L$(DA_TOP)/application/lib-L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/gpsd/3.10-r0/gpsd-3.10/-lapputils -lglobalbus-lappobj-lgps
}
$viatc_linux/application/dvr/dvr_bin.pro
equals(MY_BUILD_SYSTEM,atc){
LIBS +=-L${DA_TOP}/lib/lib/-ldvr-ludev-lsurface_atc-lglobalbus-lappobj-lapputils-lstorage_atc-lgps
}else{
LIBS +=-L${DA_TOP}/application/lib-L$(DA_TOP)/../../sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/gpsd/3.10-r0/gpsd-3.10/-ldvr-ludev-lsurface_atc-lglobalbus–
lappobj-lapputils-lstorage_atc-lgps
}
$viatc_linux/application/dvr/dvr_bin.pro
INCLUDEPATH+= ${DA_TOP}/kernel/kernel-3.18/drivers/\
../common/ \
../utils/ \
../appobj/include/ \
../globalbus/include/ \
../appcommon/include/ \
../storage_atc/ \
../dvr/gps/ \
../gps/include/ \
../gps/includeex/ \
编译问题4(makall报错):
报错:./makall:line169:mkisofs:commandnotfound
解决:$sudoyuminstallmkisofs
编译问题5(修改ac83xx_systemd_defconfig再编译时报错):
报错:Applyingpatchremove-selinux-android.patch
patchingfilesystem/extras/ext4_utils/make_ext4fs.c
Hunk#1FAILEDat62.
1outof1hunkFAILED—rejectsinfilesystem/extras/ext4_utils/make_ext4fs.c
解决:
$visources/meta/meta-atc/recipes-devtools/android-tools/android-tools_5.1.1.r37.bb
在里面做个假的do_patch(),bitbake会优先使用本bb文件的do_patch()函数。
do_patch(){
}
编译问题6(修改ac83xx_systemd_defconfig再编译时报错):
报错:sources/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/qtbase/5.5.0+gitAUTOINC+c619d2daac-r0/git/src/corelib/tools/qregexp.cpp:3947:1:internalcompilererror:inadd_stores,atvar-tracking.c:6000
解决:
$cdsources/meta/poky/meta/recipes-devtools/gcc/gcc-4.9/
$wget http://openlinux.windriver.com/overc/sources/core2_64/gcc-4.9.2-r0.1/0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch
$visources/meta/poky/meta/recipes-devtools/gcc/gcc-4.9.inc
file://0058-gcc-r212171.patch\
file://0059-gcc-PR-rtl-optimization-63348.patch\
file://target-gcc-includedir.patch\
file://0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch\
其实就是这个文件:
$cat 0062-gcc-var-tracking.c-backport-from-gcc-trunk-r212178.patch
Fromb30ffb8097749fdb55704aa7d8307ca1a58255d6MonSep1700:00:002001
From:=?UTF-8?q?Stefan=20M=C3=BCller-Klieser?=<s.mueller-klieser@phytec.de>
Date:Tue,7Apr201516:15:11+0200
Subject:[PATCH]gcc/var-tracking.c:backportfromgcctrunkr212178
MIME-Version:1.0
Content-Type:text/plain;charset=UTF-8
Content-Transfer-Encoding:8bit
resolvesabugseenoncortexa8buildingqt5libraries.
2014-06-30 JosephMyers <joseph@codesourcery.com>
*var-tracking.c(add_stores):Returninsteadofassertingifold
andnewvaluesforconditionalstorearethesame.
git-svn-id:svn+ssh://gcc.gnu.org/svn/gcc/trunk@212178138bc75d-0d04-0410-961f-82ee72b054a4
Signed-off-by:StefanMüller-Klieser<s.mueller-klieser@phytec.de>
---
gcc/var-tracking.c|3++-
1filechanged,2insertions(+),1deletion(-)
diff--gita/gcc/var-tracking.cb/gcc/var-tracking.c
index65d8285..7c38910100644
---a/gcc/var-tracking.c
+++b/gcc/var-tracking.c
@@-5997,7+5997,8@@add_stores(rtxloc,const_rtxexpr,void*cuip)
{
cselib_val*oval=cselib_lookup(oloc,GET_MODE(oloc),0,VOIDmode);
- gcc_assert(oval!=v);
+ if(oval==v)
+ return;
gcc_assert(REG_P(oloc)||MEM_P(oloc));
if(oval&&!cselib_preserved_value_p(oval))
--
1.9.1
编译问题7(修改ac83xx_systemd_defconfig再编译时报错):
报错:libevdev/1.2.2-r0/libevdev-1.2.2/test/test-main.c:24:19:fatalerror:check.h:Nosuchfileordirectory
解决:
$vimeta/poky/meta/recipes-support/libevdev/libevdev_1.2.2.bb
LIC_FILES_CHKSUM=“file://COPYING;md5=75aae0d38feea6fda97ca381cb9132eb\
file://libevdev/libevdev.h;endline=21;md5=7ff4f0b5113252c2f1a828e0bbad98d1″
DEPENDS+=“libcheck”
SRC_URI=“http://www.freedesktop.org/software/libevdev/${BP}.tar.xz”
编译问题8(修改ac83xx_systemd_defconfig再编译时报错):
报错:python报错:‘do_rootfs’,lineno:17,function
Exception:CalledProcessError:Command‘[‘du’,‘-ks’,…
解决: 没有实际问题,重新编译一次即可,可能是机器太忙导致超时,或者某个命令执行不成功。
编译问题9(preuboot编译工具问题):
报错:make:armv7a-mediatek451_001_vfp-linux-gnueabi-gcc:Commandnotfound
解决:
$viatc_linux/bootloader/preuboot/Makefile
#CROSS_COMPILE :=armv7a-mediatek451_001_vfp-linux-gnueabi-
CROSS_COMPILE :=arm-poky-linux-gnueabi-
$vi../../atc_linux/bootloader/preuboot/driver/mmc/include/linux/list.h
#ifndefNULL
#defineNULL0
#endif
python 比较好用的库有哪些Python常用库大全,看看有没有你需要的。
环境管理
管理Python版本和环境的工具
p–非常简单的交互式python版本管理工具。
pyenv–简单的Python版本管理工具。
Vex–可以在虚拟环境中执行命令。
virtualenv–创建独立Python环境的工具。
virtualenvwrapper-virtualenv的一组扩展。
包管理
管理包和依赖的工具。
pip–Python包和依赖关系管理工具。
pip-tools–保证Python包依赖关系更新的一组工具。
conda–跨平台,Python二进制包管理工具。
Curdling–管理Python包的命令行工具。
wheel–Python分发的新标准,意在取代eggs。
包仓库
本地PyPI仓库服务和代理。
warehouse–下一代PyPI。
Warehousebandersnatch–PyPA提供的PyPI镜像工具。
devpi–PyPI服务和打包/测试/分发工具。
localshop–本地PyPI服务(自定义包并且自动对PyPI镜像)。
分发
打包为可执行文件以便分发。
PyInstaller–将Python程序转换成独立的执行文件(跨平台)。
dh-virtualenv–构建并将virtualenv虚拟环境作为一个Debian包来发布。
Nuitka–将脚本、模块、包编译成可执行文件或扩展模块。
py2app–将Python脚本变为独立软件包(MacOSX)。
py2exe–将Python脚本变为独立软件包(Windows)。
pynsist–一个用来创建Windows安装程序的工具,可以在安装程序中打包Python本身。
构建工具
将源码编译成软件。
buildout–一个构建系统,从多个组件来创建,组装和部署应用。
BitBake–针对嵌入式Linux的类似make的构建工具。
fabricate–对任何语言自动找到依赖关系的构建工具。
PlatformIO–多平台命令行构建工具。
PyBuilder–纯Python实现的持续化构建工具。
SCons–软件构建工具。
交互式解析器
交互式Python解析器。
IPython–功能丰富的工具,非常有效的使用交互式Python。
bpython-界面丰富的Python解析器。
ptpython–高级交互式Python解析器,构建于python-prompt-toolkit之上。
文件
文件管理和MIME(多用途的网际邮件扩充协议)类型检测。
imghdr–(Python标准库)检测图片类型。
mimetypes–(Python标准库)将文件名映射为MIME类型。
path.py–对os.path进行封装的模块。
pathlib–(Python3.4+标准库)跨平台的、面向对象的路径操作库。
python-magic-文件类型检测的第三方库libmagic的Python接口。
Unipath-用面向对象的方式操作文件和目录
watchdog–管理文件系统事件的API和shell工具
日期和时间
操作日期和时间的类库。
arrow-更好的Python日期时间操作类库。
Chronyk–Python3的类库,用于解析手写格式的时间和日期。
dateutil–Pythondatetime模块的扩展。
delorean-解决Python中有关日期处理的棘手问题的库。
moment–一个用来处理时间和日期的Python库。灵感来自于Moment.js。
PyTime–一个简单易用的Python模块,用于通过字符串来操作日期/时间。
pytz–现代以及历史版本的世界时区定义。将时区数据库引入Python。
when.py–提供用户友好的函数来帮助用户进行常用的日期和时间操作。
文本处理
用于解析和操作文本的库。
通用
chardet–字符编码检测器,兼容Python2和Python3。
difflib–(Python标准库)帮助我们进行差异化比较。
ftfy–让Unicode文本更完整更连贯。
fuzzywuzzy–模糊字符串匹配。
Levenshtein–快速计算编辑距离以及字符串的相似度。
pangu.py–在中日韩语字符和数字字母之间添加空格。
pyfiglet-figlet的Python实现。
shortuuid–一个生成器库,用以生成简洁的,明白的,URL安全的UUID。
unidecode–Unicode文本的ASCII转换形式。
uniout–打印可读的字符,而不是转义的字符串。
xpinyin–一个用于把汉字转换为拼音的库。
关于bitbake安装,bitbucket安装的介绍到此结束,希望对大家有所帮助。
本文地址:http://www.cj8845.cn/13416.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。