View source for MokoMakefile/zh tw
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 tw.
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 tw.
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 is a wrapper around all that to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by 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 下載並安裝穩定的二進位檔。
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://www.openembedded.org/wiki/OEandYourDistro but they may be outdated, incomplete and do not cover everything which OpenMoko needs to build.
在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 repository checkout 及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 will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:
以下是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:
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do
$OMDIR/openmoko# quilt edit trunk/oe/packages/tasks/task-openmoko.bb
Here, increase the value PR by one and add mycoolpackage \ (with the backslash!) just before the line reading # update-alternatives \.
Now run
quilt refresh cd .. make update openmoko-devel-image
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.
There is a Hello World! tutorial available too.
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as "For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!", "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".
Project page: http://mokomakefile.projects.openmoko.org/