View source for MokoMakefile/zh cn
From Openmoko
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to MokoMakefile/zh cn.
You do not have permission to edit this page, for the following reasons:
You can view and copy the source of this page:
Templates used on this page:
Return to MokoMakefile/zh cn.
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
MokoMakefile 是在设立Openmoko Build 环境时储存所有工作的Makefile。藉由自动化安装新的Openmoko build 环境的过程,它提供所有的开发人员相同的设定环境。
透过设定新的Openmoko build 环境设定过程,它提供现有的开发人员相同的设定,但一般较喜欢透过手动或个别的设定程序设定。
它会为BUILD 环境产物提供相同的重复性,并且可以像BitBake script放入OpenEmbedded 般轻松维护,并且提供建立OpenEmbedded的标准化过程。
它不像是在Building Openmoko from scratch中所提到的手动设定过程。MokiMakefile并不会安装任何程序到你的系统里(即使是一般的使用者也可以使用)。
MokoMakefile是一个可以将所有东西包装起来,让开发人员能透过Openmoko设定指引的过程,完成编译,并且在开发环境下,它易于设定及维护。
MokoMakefile是由Rod Whitby 所开发--它并不是一个Openmoko正式的产品。 若它与official OpenMoko build instructions及MokoMakefile有差异之处,你应该考虑用正式的操作来修正它。 MokoMakefile 可以建立OM-2007.1 或OM-2007.2 影像文件。核心团队选择默认值,但是你可以选择Makefile中的一些工具来使用。
MokoMakefile也可以建立 QEMU-based Neo1973 仿真器,将它视为安装及执行Openmoko映像文件的目标装置。这些指令也可以在没有下载整个Openmoko OpenEmbedded套件的状况下下载及建立映像档。你可以在Using QEMU with MokoMakefile中找到这个部份的说明。
不论单独或者是使用客制化的方法使用MokoMakefile来安装Openmoko 环境,你必须符合某些需求,让Openmoko build 可以成功运做:
对于busybox,这个可以关闭它,但关闭它并不会表示它能被gcc最佳化。
OpenEmbedded 用来控制系统的版本是monotone,它并不是由MokoMakefile下载及安装的。如果你的套件并没有提供软件包,你可以从http://monotone.ca 下载并安装稳定的二进制文件。
在http://www.openembedded.org/wiki/OEandYourDistro 中,你可以看到有一些套件特别隐喻指出要准备给OpenEmbedded使用的build host,但它可能有点老旧,不完整,并且不包含Openmoko需要的内容。
在the section on build host prerequisites in Building OpenMoko from scratch是很好的导引文章。
如果你忘记了OE本身所必须使用的东西,OE将会在你开始build 时出现提示,但是它并不会查看Openmoko的BUILD独立性,所以,你必须在开始前先安装它,或者在build失败之后安装它们。OpenEmbedded 会在你上次中断build的地方重新开始。
你的套件必须能提供以下的指令,以便于OpenEmbedded开始建立build:
subversion texi2html texinfo help2man
Openmoko须要开发套件(搭配header档案、开发链接库及工具) 以利于完成BUILD:
ncurses zlib (or libz) OpenSSL GTK++
因为在与QEMU及GCC-4互动时产生问题,你也必须安装gcc-3.x 。
apt-get install subversion monotone build-essential help2man diffstat texi2html texinfo cvs gawk cogito
apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev # To prevent errors in host validation apt-get install ca-certificates # For OpenMoko 2007.2 using BitBake-1.8.8: apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg # For building faster apt-get install quilt python-psyco ccache # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it. apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools
要在10.3上建立Openmoko,你必须要使用:
gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man and monotone
为了让MokoMakefile不要在编译QUMU-USER时失败,你必须使用gcc33:
wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm
你可以在Talk page on Building on SuSE Linux 10.3-AMD64中找到它的内容。
10.1 及 10.2: 它与10.3套件相同,但是会安装 openssl-devel
而不是libopenssl-devel。针对monotone,请使用10.2 or 10.1。
如QEMU-based neo1973 仿真器也可以像由MokoMakefils开始建立映像档的其中一部份,所以,你需要gcc-3.3及其它的软件套件来建立QEMU安装。你可以参考在在MokoMakefile中使用UEMU中的 建立映像档基本需求 中所提到需求软件讯息。
在编译 QEMU 的过程若你有任何问题,或者是你不需要用到它,你可以藉由在build/conf/local.conf 档案中加入下列的指令,来停用QEMU。
ENABLE_BINARY_LOCALE_GENERATION = "0"
1 - 建立你的 $OMDIR 目录 (请注意你可以将 ~/moko 目录修改为任何你喜欢的目录。如果你已经从不同的档案系统挂载了 ~moko 目录,请确认你有编辑 /etc/mtab目录,为档案系统加入'执行'权限,否则 bitbake则会出现错误讯息:
mkdir ~/moko ; cd ~/moko
2 - 取得MokoMakefile:
wget http://www.rwhitby.net/files/openmoko/Makefile
如果它无法使用的话,请试着使用下面的指令:
wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile
note: 如果你想要从旧版的 2007.1 开始编译,而不是使用新版的内容编译Makefile,请从如下的内容开始编辑: OPENMOKO_GENERATION = 2007.1 #OPENMOKO_GENERATION = 2007.2
NOTE: 为了要建立2007.2,MokoMakefile使用的BitBake 1.8.8必须使用需要python-sqlite2 及 sqlite-3.3或之后的版本。SUSE Linux 10.1的使用者可以从 这里更新openSUSE 10.2 |
3 - 设定环境:
make setup
4 - 开始building。在程序开始之前,请查看Tips一节,取得Make multicore aware。你可能想要修改build/conf/local.conf 档案到你的目的地 (emulation/chroot) 环境:
make openmoko-devel-image
Hint: 使用这个指令建立的映像文件可以在下面的路径下找到{$OMDIR}/build/tmp/deploy/images/neo1973
它将会设定在从scratch中建立Openmoko建议的路径结构,它会下载所有需要的档案(从正确的地方取得正确的版本),它将会立刻开始建立影像文件。
一旦你做好了它,你可以选择继续使用MokoMakefile来启始你拉下来的build,或者你可以进入build 目录,并且手动执行bitbake指令。你可以自行选择自己要的方法。
为了要更为容易的维护你所建立的环境,下面的指令是很有用的。
1 - 将MokoMakefile更新到最近的版本:
make update-makefile
2 - 确认建立的目录架构是否有任何新的变更:
make setup
3 - 要更新放置Openmoko原始码及档案的储存位置及MokoMakefile patches到最近的版本:
make update
以最后变更的项目来重建新映像档的最快方法:
make update-makefile && make setup update openmoko-devel-image
首先,确认在执行下面指令后,问题是可以重新制作:
make update-makefile && make setup && make update
之后,执行:
make clean-package-<foo>
( <foo> 替代为失败的软件名称)
最后,
make openmoko-devel-image
如果好运的话--你应该会在 $omdir/build/tmp/deploy/glibc/images/neo1973/ 目录下找到映像文件。 接着,你可以参考 |Flashing openmoko更新这些内容
若是没有找到映像档的话,你可以在执行此一系列的命令列(包含更新及安装操作)之后得到约三次的错误讯息,之后就可以将报告放到IRC中。
从OM-2007.1 更新到 OM-2007.2,你会历经下列过程:
Patch bitbake-1.6.6-om3.patch does not apply (enforce with -f)
然后,键入 "make clobber-patches" 修复它。若在MokoMakefile中有BUG的话,它可能会进行约24小时。一旦patches遭到破坏,他们将会重新下载,并且这个问题就不会再发生。
如果你看到下列讯息:
ERROR: No providers of build target u-boot-openmoko (for [])
查看日志记录来查看你是否遇到了与建立openmoko-devel-image 相同的错误,上面的错误是MokoMakefile的逻辑性的边际效应,只要将"uboot-openmoko" 重新以 "u-boot-openmoko"命名即可。
暂时性或独立的问题时,都可以在讨论页中找到相关的内容。当他们被修复之后,他们将会从那个页面中被移除。
INHERIT += "rm_work"
将这行指令加到 local.conf (e.g. ~/moko/build/conf/local.conf)。 在相对应的软件套件正确建立后,它将会移除T每一个映像文件中的/tmp/work/*/<package> 目录。在10/16/07中,预设的情况下,它会出现在local.conf中。
mtn: misuse: database /home/username/moko/OE.mtn is laid out according to an old schema
接着,你须要升级OE.mtn。在~/moko中使用以下的内容:
# mtn --db OE.mtn db migrate
rm sources/<package>* cd build . ../setup-env bitbake -crebuild <package>
之后,你的BUILD可能必须重新运作一次。
编辑local.conf 并且加入下列指令列:
PARALLEL_MAKE = "-j 4" BB_NUMBER_THREADS = "4"
变更PARALLEL_MAKE 及 BB_NUMBER_THREADS 值,以配合装置。
GLIBC_GENERATE_LOCALES = "en_US.UTF-8 nl_NL.UTF-8"
ENABLE_BINARY_LOCALE_GENERATION = "0"
openmoko-devel-image
,请执行run make build-package-package-index
。
User:Wurp 将会更新它,让它变为易于理解的,但也许它同时也可以帮忙很多人。
以下是MokoMakefile中较有用的指令清单(actually make targets) 及针对这些指令的一些简单的介绍。它应该在$OMDIR 中执行。
NOTE: 如果将MokoMakefile用在OM2007.2上,并且参考$OMDIR/openmoko,它应该用$OMDIR/openembedded取代与置换。Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi |
针对下列的解释 $OMDIR 是Makefile放置所有东西的位置。
要让in-tree 变更,并且让它们可以被qemu使用:
cd $OMDIR/openmoko quilt new descriptive-patch-name.patch quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify ...make the changes... quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there
Note: DoNOT absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!
要建立变更内容,并且 让他们可以被qemu使用:
make build-qemu make flash-qemu-local make run-qemu
如果你想要修改应用程序,而不是Openmoko toolchain,它是你必须做的工作(如:openmoko-messages):
cd $OMDIR/build . ../setup-env bitbake -c unpack openmoko-messages cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/ ...make the changes... cd - bitbake openmoko-messages
然后,继续使用MokoMakefile。
如果你想要在Openmoko套件中加入应用程序,请进行下列工作: 所有的档案编辑都应该使用quilt。这样patch就可以轻松的送到openmoko项目当中。 首先,建立一个与套件相对应的路径,并且编辑这个路径下的 .bb 档案。
cd $OMDIR/openmoko/ quilt new mycoolpackage.patch mkdir trunk/oe/packages/mycoolpackage quilt add trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb quilt edit trunk/oe/packages/mycoolpackage/mycoolpackage_1.bb
这个档案应该有下面的内容:
DESCRIPTION = "This is a cool package" SECTION = "username/mycoolpackage" PV = "1" inherit autotools SRC_URI = "http://www.example.com/download/mycoolpackage-1.tar.gz"
Explanation:
这并不是全部,我们也会需要告诉MokoMakfile它需要被建立,并且在映像文件中包含软件套件。要完成这个工作,请执行下面的指令:
$OMDIR/openmoko# quilt edit trunk/oe/packages/tasks/task-openmoko.bb
在这里,在读入# update-alternatives \. 程序行前,加入 PR 及 mycoolpackage \ (使用\符号)
现在,执行
quilt refresh cd .. make update openmoko-devel-image
如果每一件事都顺利的话,你应该建立好了可以更新到手机的Openmoko映像档,并且可以在qemu 执行。
Hello World范例程序!手册可以在这里下载。
MokoMakefile被#openmoko开发人员所推崇: "因为某些原因,我无法手动安装每个套件,让(bb 抱怨我的 bbpath ) ... 但是使用你的makefile,它可以顺利的运作。 " "MokoMakefile rocks!" "Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system", and "make openmoko-devel-image :) - no magic there".