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:$PATH
8.编译工具
$ 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')}"