ubuntu 下 OE(Openembedded) 安装-bitbake
1创建目录
$ mkdir -p /stuff/build/conf $ cd /stuff/
2下载源码
wget http://download.berlios.de/bitbake/bitbake-1.10.2.tar.gz
3克隆工程
$ git clone git://github.com/openembedded/openembedded.git
4更新
$ git pull --rebase
5创建目录
$ cd /stuff/ $ cp openembedded/conf/local.conf.sample build/conf/local.conf $ vi build/conf/local.conf 6配置
BBFILES = "/stuff/openembedded/recipes/*/*.bb" DISTRO = "angstrom-2010.x" MACHINE = "beagleboard" 7环境变量设置
$ export BBPATH=/stuff/build:/stuff/openembedded $ export PATH=/stuff/bitbake/bin:$PATH8编译工具
$ bitbake nano
$ bitbake x11-image这是已经能用的修改后的local.conf # # OpenEmbedded local configuration file (sample) # # Please visit the Wiki at http://openembedded.org/ for more info. # # # Be SURE to read this file in its entirety and the GettingStarted page on the # wiki before proceeding. # # Once you have done that,remove the line at the end of this # file and build away. # # WARNING: lines starting with a space (' ') will result in parse failures. # Remove '# ' from commented lines to activate them. # # NOTE: Do NOT use $HOME in your paths,BitBake does NOT expand ~ for you. If you # must have paths relative to your homedir use ${HOME} (note the {}'s there # you MUST have them for the variable expansion to be done by BitBake). Your # paths should all be absolute paths (They should all start with a / after # expansion. Stuff like starting with ${HOME} or ${TOPDIR} is ok). # Use this to specify where BitBake should place the downloaded sources into DL_DIR = "/home/doppler/stuff/sources" # Delete the line below. Then specify which .bb files to consider for # your build. Typically this will be something like BBFILES = "/path/to/openembedded/recipes/*/*.bb" #BBFILES := "${@bb.fatal('Edit your conf/local.conf: BBFILES')}" BBFILES = "/home/doppler/stuff/openembedded/recipes/*/*.bb" # Use the BBMASK below to instruct BitBake to _NOT_ consider some .bb files # This is a regular expression,so be sure to get your parenthesis balanced. # BBMASK = "/(nonworking|obsolete)/" # Comment this if your host distribution does not provide the # help2man tool. ASSUME_PROVIDED += "help2man-native" # Uncomment this if your host distribution has recent enough Linux # Kernel header files. Utilities we use to generate certain types of # target filesystems need somewhat recent header files. # ASSUME_PROVIDED += "linux-libc-headers-native" # Uncomment this if you want to use a prebuilt toolchain. You will need to # provide packages for toolchain and additional libraries yourself. You also # have to set PATH in your environment to make sure BitBake finds additional binaries. # ASSUME_PROVIDED += "virtual/${TARGET_PREFIX}gcc virtual/libc" # Uncomment this if you are building Linux 2.4 Embedix kernels. # i.e. openzaurus-sa-2.4.18 and openzaurus-pxa-2.4.18 - and don't forget # to rename the binaries as instructed in the Wiki. # Most users do not need this anymore thankfully! # ASSUME_PROVIDED += "virtual/arm-linux-gcc-2.95" # Select between multiple alternative providers,if more than one is eligible. PREFERRED_PROVIDERS = "virtual/qte:qte virtual/libqpe:libqpe-opie" PREFERRED_PROVIDERS += " virtual/libsdl:libsdl-x11" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-intermediate:gcc-cross-intermediate" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross" PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross" # Uncomment this to specify where BitBake should create its temporary files. # Note that a full build of everything in OpenEmbedded will take GigaBytes of hard # disk space,so make sure to free enough space. The default TMPDIR is # <build directory>/tmp # Don't use symlinks in in the path to avoid problems TMPDIR = /home/doppler/stuff/tmp # Uncomment this to specify a machine to build for. See the conf directory # for machines currently known to OpenEmbedded. This will automatically take care # of TARGET_ARCH # MACHINE = "c7x0" MACHINE = "beagleboard" # Use this to specify the target architecture. Note that this is only # needed when building for a machine not known to OpenEmbedded. Better use # the MACHINE attribute (see above) # TARGET_ARCH = "arm" # Use this to specify the target operating system. The default is "linux",# for a normal linux system with glibc. Set this to "linux-uclibc" if you want # to build a uclibc based system. # Normally the DISTRO of your choosing will take care of this # TARGET_OS = "linux" # TARGET_OS = "linux-uclibc" # Uncomment this to select a distribution policy. See the conf directory # for distributions currently known to OpenEmbedded. # Although it no longer contain version number in the (file-)name # openzaurus-unstable is a so called "versioned" distro,i.e. they # explicitely select specific versions of varIoUs packages. # Stay away from unversioned distros unless you really know what you are doing # DISTRO = "angstrom-2008.1" DISTRO = "angstrom-2010.x" # Uncomment and modify the following lines if you wish to use an external # binary toolchain,in this case one built by CodeSourcery. The following # example is for ARM and we set TOOLCHAIN_VENDOR to "-none" as the CodeSourcery # ARM tools are arm-none-linux-gnueabi-$tool. Other arches need different # values here. Some arches may need to override TARGET_PREFIX (ia32). # This assumes that the tools are already in the users PATH. # TOOLCHAIN_VENDOR = "-none" # TOOLCHAIN_TYPE = "external" # TOOLCHAIN_BRAND = "csl" # TOOLCHAIN_PATH = "/path/to/installed/copy/of/CodeSourcery/Sourcery_G++_Lite" # This example is for the Angstrom ARM toolchain,that uses cross prefix of # arm-angstrom-linux-gnueabi-$tool. This assumes that the tools are already # in the users PATH. # TOOLCHAIN_VENDOR = "-angstrom" # TOOLCHAIN_TYPE = "external" # TOOLCHAIN_BRAND = "angstrom" # TOOLCHAIN_PATH = "/usr/local/angstrom/arm" # Uncomment this if you want to use linux-headers from the linux-libc-headers # recipe as opposed to those bundled with the external (csl/angstrom) toolchain # PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers" # So far,angstrom.conf sets ENABLE_BINARY_LOCALE_GENERATION # to generate binary locale packages at build time using qemu-native and # thereby guarantee i18n support on all devices. If your build breaks on # qemu-native consider disabling ENABLE_BINARY_LOCALE_GENERATION (note that # this breaks i18n on devices with less than 128MB RAM) or installing # a working third-party qemu (e.g. provided by your distribution) and # adding qemu-native to ASSUME_PROVIDED. Caveat emptor,since third-party # qemus lack patches needed to work with varIoUs OE targets. # ENABLE_BINARY_LOCALE_GENERATION = "0" # ASSUME_PROVIDED += "qemu-native" # If ENABLE_BINARY_LOCALE_GENERATION is set to "1",you can limit locales # generated to the list provided by GLIBC_GENERATE_LOCALES. This is huge # time-savior for developmental builds. Format: list of locale.encoding pairs # with spaces as separators. # GLIBC_GENERATE_LOCALES = "en_US.UTF-8 en_GB.UTF-8 de_DE.UTF-8" # Uncomment this to select a particular major kernel version if the MACHINE setting # supports more than one major kernel version. Currently this is suported by the # following MACHINE types: poodle,tosa and simpad. # MACHINE_KERNEL_VERSION = "2.6" # Uncomment one of these to build packages during the build process. # This is done automatically if you set DISTRO (see above) # INHERIT = "package_ipk" # INHERIT = "package_tar" # Add the required image file system types below. Valid are # jffs2,tar(.gz|bz2),cpio(.gz),cramfs,ext2(.gz),ext3(.gz),ext4(.gz|.bz2),# squashfs,squashfs-lzma IMAGE_FSTYPES = "jffs2 tar" # Uncomment this if you want to keep the temporary rootfs # directory,this can be useful during development. # (Note that this rootfs is NOT usuable as NFS export.) # IMAGE_KEEPROOTFS = "1" # Uncomment this to enable the use of ccache when building. Due to # the nature of our builds this is only helpful in cases when one # is rebuilding a recipe or set of recipes,repeatedly. # CCACHE = "${@bb.which(bb.data.getVar('PATH',d,1),'ccache') and 'ccache '}" # Uncomment this to disable the parse cache (not recommended). # CACHE = "" # Uncomment this if you want BitBake to emit debugging output # BBDEBUG = "yes" # Use DEBUG_BUILD to build packages with DEBUG_OPTIMIZATION instead of # FULL_OPTIMIZATION. # # DEBUG_BUILD = "1" # If you want to have unstripped ready-to-debug binaries,set this to "no",# although for debugging you can use automatically produced -dbg packages. # If you need to have completely undebuggable builds,set this to "full",# by default gnu.debuglink section is left in the binaries after stripping,so # this might be useful if you want to have checksum-level binary consistency # across successive builds. # PACKAGE_STRIP = "no" # Uncomment these to build a package such that you can use gprof to profile it. # NOTE: This will only work with 'linux' targets,not # 'linux-uclibc',as uClibc doesn't provide the necessary # object files. Also,don't build glibc itself with these # flags,or it'll fail to build. # # PROFILE_OPTIMIZATION = "-pg" # SELECTED_OPTIMIZATION = "${PROFILE_OPTIMIZATION}" # LDFLAGS =+ "-pg" # Uncomment this to enable parallel make. # This allows make to spawn mutliple processes to take advantage of multiple # processors. Useful on SMP machines. This may break some packages - we're # in the process of marking these so let us know if you find any. # PARALLEL_MAKE = "-j 4" # Uncomment to run multiple bitbake threads in parallel. # Bitbake can do multiple jobs in parallel: Its a good idea make use of # all available resources: e.g. to download sources while some other # piece of software is compiled. # BB_NUMBER_THREADS = "2" # Uncomment this if you want BitBake to emit the log if a build fails. BBINCLUDELOGS = "yes" # Uncomment this if you want to install shared libraries directly under their SONAME,# rather than installing as the full version and symlinking to the SONAME. # PACKAGE_SNAP_LIB_SYMLINKS = "1" # EDIT THIS FILE and then remove the line below before using! #REMOVE_THIS_LINE:="${@bb.fatal('Read the comments in your conf/local.conf')}"