Toolchain/zh cn

From Openmoko

(Difference between revisions)
Jump to: navigation, search
Line 81: Line 81:
 
  . /usr/local/openmoko/arm/setup-env
 
  . /usr/local/openmoko/arm/setup-env
  
* 你必须为这个应用程序建立一个设定值,这个也可以用来检查你的系统上可以使用的所有必须的链接库、工具…等。如果这项工作无法完成时,请参考"需求环境"一节,取得更多信息。
+
* 你需要为这个应用程序建立配置文件,这个过程也用来检查你的计算机上的函数库和工具等是否可用。如果这项工作无法完成时,请参考本文的"基本安装环境"一节。
  
om-conf openmoko-sample2
+
om-conf openmoko-sample2
  
 
* 现在你可以选择性的修改openmoko-sample2/src 中的源码。
 
* 现在你可以选择性的修改openmoko-sample2/src 中的源码。
  
* 要从源码中建立应用程序,你应该使用"make":
+
* 要从源代码中构建应用程序,你应该使用"make":
  
 
  cd openmoko-sample2
 
  cd openmoko-sample2
 
  make
 
  make
  
如果你希望在主机上安装这个项目,你可以利用下面的操作,将它安装到一个现有的设定中:
+
如果你希望在主机上安装这个程序,作为后续使用的共享库,那么你可以进行如下操作来将它安装到指定目录中:
 
  om-conf --prefix=/usr/local/openmoko openmoko-sample2
 
  om-conf --prefix=/usr/local/openmoko openmoko-sample2
 
  cd openmoko-sample2
 
  cd openmoko-sample2
 
  make install
 
  make install
  
==如何修改范例项目==
+
==如何修改示例项目==
  
为了要使用Openmoko-sample2 档案来制作你自己的项目,某些变更是必须的: * 复制下载的范例应用程序:
+
为了要使用Openmoko-sample2 文件来制作你自己的项目,需要做适度修改:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
+
* 复制下载的示例应用程序:
 +
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
 
   
 
   
* 将档案夹以你的项目名称命名 ( 在这个范例中为your-project-name) ,并删除旧有的范例档案。
+
* 重命名文件夹 ( 在这个示例中为"your-project-name") ,并删除旧有的示例文件。
  
 
  mv openmoko-sample2 your-project-name
 
  mv openmoko-sample2 your-project-name
Line 109: Line 110:
 
  rm *.c
 
  rm *.c
  
* copy your sources (in this example your-sources) into src/
+
* 将你自己的源代码复制到src/目录(本示例中为"your-sources")
 
+
 
  cp your-sources .
 
  cp your-sources .
 
  cd ..
 
  cd ..
  
* 现在,在主要的档案夹中,使用下面的指令修改autogen.sh 。
+
* 现在,在主目录下,修改autogen.sh:
  
 
  PKG_NAME="your-project-name"
 
  PKG_NAME="your-project-name"
  
* 藉由更新下面的内容修改configure.ac
+
* 修改configure.ac文件("main.c"应该是项目中的主程序文件)
  AC_INIT(your-project-main, 0.0.1, http://www.openmoko.org/)     
+
  AC_INIT(your-project-main, 0.0.1, [http://www.openmoko.org/ http://www.openmoko.org/])     
 
  AC_CONFIG_SRCDIR(src/main.c)
 
  AC_CONFIG_SRCDIR(src/main.c)
  
* 到data/ 档资夹,并且重新将这些档案命名:
+
* 切换到data/目录,以你的项目名重命名几个文件:
 
  cd data
 
  cd data
 
  mv openmoko-sample.png your-project-name.png
 
  mv openmoko-sample.png your-project-name.png
 
  mv openmoko-sample.desktop your-project-name.desktop
 
  mv openmoko-sample.desktop your-project-name.desktop
  
* 用下列的指令修改data/下的Makefile.am 档案。
+
* 修改data/下的Makefile.am文件:
  
 
  dist_desktop_DATA = your-project-name.desktop
 
  dist_desktop_DATA = your-project-name.desktop
 
  dist_appicon_DATA = your-project-name.png
 
  dist_appicon_DATA = your-project-name.png
  
* 透过修改下面的内容,修改data/路径下的 Makefile.in
+
* 修改data/下的 Makefile.in文件
 
   
 
   
 
  dist_desktop_DATA = smart-search.desktop
 
  dist_desktop_DATA = smart-search.desktop
 
  dist_appicon_DATA = smart-search.png
 
  dist_appicon_DATA = smart-search.png
  
* 透过下面的内容,修改your-project-name:
+
* 修改your-project-name.desktop文件:
  
 
  Name=your-project-name
 
  Name=your-project-name
Line 145: Line 145:
 
  Exec=your-project-name
 
  Exec=your-project-name
  
*加入以下的内容,
+
* 在your-project-name.desktop文件加入以下的内容,
  
 
  Icon=your-project-name
 
  Icon=your-project-name
  
* 切换到src/ 资料夹
+
* 切换到src/目录:
  
 
  cd ..
 
  cd ..
 
  cd src
 
  cd src
  
* 藉由更新下面的程序,修改Makefile.am
+
* 修改Makefile.am文件
  
 
  bin_PROGRAMS = your-project-name
 
  bin_PROGRAMS = your-project-name
Line 161: Line 161:
 
  your_project_name_LDADD  = @DEPENDENCIES_LIBS@
 
  your_project_name_LDADD  = @DEPENDENCIES_LIBS@
  
* 请确认除了 main.c 外,修改,将所有的.c 及.h 档案 参数名称的 '-' 字符修改为 '_' 。
+
* 请将main.c之外的所有.c和.h文件放入其中,并将变量名称中的 '-' 字符修改为 '_' 。
  
==封装你的应用程序==
+
==将你的应用程序打包==
  
我们已经加入了一个script在你的应用程序外制作了ipkg 。请注意这并不是要在Neo上测试你的应用程序 ( 若你要测试应用程序,你只要使用SCP产出的二进制代码及数据),它对于想你将你的软件发布给其它人而言,相当方便。
+
工具链中有一个脚本用来将应用程序制作为ipkg包。请注意,你并不需要在Neo手机上测试此应用程序 ( 若要在Neo手机上测试此应用程序,只需要使用scp将生成的二进制代码和数据传送到手机上即可),打成ipkg包也是为了方便发布给他人。
  
 
  om-make-ipkg openmoko-sample2
 
  om-make-ipkg openmoko-sample2
  
现在你已经取得了openmoko-sample2_0.1_armv4t.ipk ,你可以将它`scp' 到你的Neo,并且安装它。
+
现在你已经得到了openmoko-sample2_0.1_armv4t.ipk ,你可以使用"scp"将它传输到Neo手机并安装:
  
 
  scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
 
  scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
 
  ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk
 
  ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk
  
请注意当你重新发布产生的ipkg ,请注意它只是一个有更多信息的ipk骨架,若你无法取得链接库的独立性。查看下面的内容来暸解如何修复这个问题。
+
请注意:这个ipkg包并未包含控制信息,例如函数库的依赖关系,所以,如果你想分发此ipkg包,应该加入控制信息文件。你可以在控制信息文件中提供版本号、软件包描述、作者和联系方式等:
你也可以在控制档中提出这个版本的编号,描述及作者/连络方式。
+
  
 
  om-make-ipkg myapp myapp_control
 
  om-make-ipkg myapp myapp_control
  
myapp_control的范本:
+
myapp_control的模板如下:
  
 
  Package: $appname
 
  Package: $appname
Line 188: Line 187:
 
  Maintainer: $USER
 
  Maintainer: $USER
 
  Architecture: armv4t
 
  Architecture: armv4t
  Homepage: http://www.openmoko.org/
+
  Homepage: [http://www.openmoko.org/ http://www.openmoko.org/]
 
  Depends:  
 
  Depends:  
 
  Source: ${SRC}
 
  Source: ${SRC}
  
==从这里出发的目的地==
+
==你下一步要参考的内容==
  
使用外部的 toolchain是一个为Neo建立程序的好方法。如果你熟悉这个产品的话,你也会想要参考:
+
使用外部工具链来为Neo构建应用程序比较简单。如果你熟悉这个流程的话,你也会想要参考:
* 使用[[Qemu]] 在仿真环境下测试应用程序
+
* 使用[[Qemu]] 在仿真环境下测试你的应用程序
** Ubuntu使用者可能想要查看[[Automatic_emulation_in_Ubuntu]]
+
** Ubuntu使用者可能想要查看的[[Automatic_emulation_in_Ubuntu]]
* 使用[[Host-based_development_with_Xoo_and_Xephyr|host-based development]] 加强效能
+
* 使用[[Host-based_development_with_Xoo_and_Xephyr|host-based development]] 提高效率
* 使用[[OpenEmbedded]] 客制化你的Openmoko套件映像档
+
* 使用[[OpenEmbedded]] 定制你的Openmoko发行版映像文件
  
=进阶议题=
+
=高级主题=
==使用 toolchain 提供的链接库==
+
==使用工具链提供的链接库==
加入必要的链接库到src/Makefile.am 的 _LDADD 字段,如:
+
向src/Makefile.am文件的 _LDADD 字段加入必要的链接库,示例如下:
 
  openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2
 
  openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2
  
之后,请确定再次执行
+
之后,请再次运行
om-conf  
+
om-conf  
  
==将其它的链接库安装到toolchain==
+
==向工具链中安装附加函数库==
不久之后,你会想要编译一个无法透过预先编译toolchain来完成依存性的程序,’如一些obscure libraries。
+
不久之后,你也许想要编译一个应用程序,这个应用程序依赖于生僻的函数库,而这些函数库并未由预编译的工具链提供。
  
在这样的案例当中,请放心的将其它的libraries 放到下一次释出的Openmoko toolchain。以下是你如何扩充 toolchain安装。也就是说,我们想要加入一个名为liburiparse的链接库:
+
这种情况下,你可以请求将附加的函数库放入下一版本的OpenMoko工具链,而在那之前,你可以通过如下方式增强现有的工具链。这里演示了如何向工具链中加入一个名为liburiparse的函数库:
  
 
  cd ~/source
 
  cd ~/source
Line 219: Line 218:
 
  make install
 
  make install
  
==使用OE包装应用程序==
+
==使用OE打包应用程序==
当你撰写了一支很好的应用式,而你想要与其它人分享,最佳的方式是
+
当你编写了一个很酷的应用程序并想与他人分享,最佳方法是
# 上传你的程序原始码到公共的区域
+
# 上传你的应用程序源代码到公共区域
# 送出[[BitBake]][[OpenEmbedded]],最好的方法是透过[http://bugs.openembedded.org OpenEmbedded bugtracker]
+
# 提交一个[[BitBake]]包到[[OpenEmbedded]],最好通过[http://bugs.openembedded.org OpenEmbedded bugtracker]
  
您也可以参考 [[Customizing your OpenMoko distribution|客制化你的Openmoko套件]].
+
您也可以参考 [[Customizing your OpenMoko distribution|定制化你的OpenMoko发行版]].
  
 
==问题排除==
 
==问题排除==
  
* 请使用[http://lists.openmoko.org/mailman/listinfo/openmoko-devel OpenMoko-Devel] 邮件清单来取得更多帮助。
+
* 请使用[http://lists.openmoko.org/mailman/listinfo/openmoko-devel OpenMoko-Devel] 邮件列表来获得帮助。
  
  

Revision as of 04:03, 30 April 2008

Contents

简介

工具链是一组用来编译代码的工具集,Openmoko有两类不同用途的工具链。

基本工具链:用于开发简单的单一应用程序

为了开发简单的单一应用程序,你可以使用针对Openmoko项目预先构建好的工具链。本文将说明这一工具链的使用方法,它将帮助你一步步的编译项目并最终运行在目标设备上。你应该听过OpenEmbedded,但作为开发此类应用程序的开发人员,你’’’不’’’应该使用OpenEmbedded

OpenEmbedded:用于系统集成和定制发行版

针对系统集成和定制发行版的任务,你应该使用OpenEmbedded,它能通过bootstrapping/build流程建立起自己的交叉编译工具链。系统集成和定制发行版未在本文加以讨论。

基本工具链的用法

基本安装条件

熟悉Linux及其命令行工具是最基本的,你必须有一台x86兼容的、最少有1G磁盘空间的电脑。你也必须要有使用本地编译器来编译程序源码的相关操作经验。同时,假设你有home目录(~)和/usr/local/目录(有需要时,需使用root用户来操作)的写权限。如果你没有上述的权限,请与管理员联系。

你至少应该具有使用安装程序的权限,允许你使用自动工具构建软件包。(比如./configure, make, make install)。

需要安装的部分软件如下:

  • 针对大多数Linux发行版,需要安装如下软件包:
    • autoconf, automake
    • binutils, gcc, gcc-c++
    • libtool
    • ccache
    • intltool
  • 针对 ubuntu (7.10) ,需要安装以下软件包:
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev ccache libxrender-dev intltool

下载及安装

预构建的工具链可以从 [downloads.openmoko.org]下载:

  • 在计算机中的任一位置建立目标文件夹,但推荐建立下述文件夹:
 mkdir ~/sources
 cd ~/sources
  • 下载与计算机CPU类型(x86_64或i686)匹配的软件包:
 wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
or
 wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2


接着,要将它解压缩到文件系统。注意:此软件包必须安装到且会自动安装到/usr/local/openmoko/目录。

  • 切换到超级用户,然后解压缩。(请使用"su",若您使用的是Debian/Ubuntu,请在tar指令前加入"sudo"):
  cd /
  tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
  • 在类Debian系统上,你可以使用alien(+fakeroot)来将.tar.bz2文件构建成一个易于卸载的软件包(使用dpkg -i <package.deb>):


  bunzip2 openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
  gzip openmoko-x86_64-arm-linux-gnueabi-toolchain.tar
  fakeroot alien -d openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.gz
  • 预构建的工具链是针对x86_64或i686的。如果你希望的话,你可以使用OpenEmbedded来建立自己的工具链:
  bitbake meta-toolchain-openmoko

最后,每次使用此工具链时,必须先改变环境变量,这样才会找到此工具链。此工具链提供了一个脚本来做这项工作。

请注意,如果你并没有使用"sh" 或"bash" shell (用"echo $SHELL" 查看) ,那你必须先启动"sh" 或"bash"。

. /usr/local/openmoko/arm/setup-env

构建示例项目

在目标文件夹中 (本文为~/):

  • 复制已下载的示例应用程序源文件:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  • 设定环境变量 (记得使用"sh" 或 "bash"):
. /usr/local/openmoko/arm/setup-env
  • 你需要为这个应用程序建立配置文件,这个过程也用来检查你的计算机上的函数库和工具等是否可用。如果这项工作无法完成时,请参考本文的"基本安装环境"一节。
om-conf openmoko-sample2
  • 现在你可以选择性的修改openmoko-sample2/src 中的源码。
  • 要从源代码中构建应用程序,你应该使用"make":
cd openmoko-sample2
make

如果你希望在主机上安装这个程序,作为后续使用的共享库,那么你可以进行如下操作来将它安装到指定目录中:

om-conf --prefix=/usr/local/openmoko openmoko-sample2
cd openmoko-sample2
make install

如何修改示例项目

为了要使用Openmoko-sample2 文件来制作你自己的项目,需要做适度修改:

  • 复制下载的示例应用程序:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/

  • 重命名文件夹 ( 在这个示例中为"your-project-name") ,并删除旧有的示例文件。
mv openmoko-sample2 your-project-name
cd your-project-name
cd src
rm *.c
  • 将你自己的源代码复制到src/目录(本示例中为"your-sources"):
cp your-sources .
cd ..
  • 现在,在主目录下,修改autogen.sh:
PKG_NAME="your-project-name"
  • 修改configure.ac文件("main.c"应该是项目中的主程序文件)
AC_INIT(your-project-main, 0.0.1, http://www.openmoko.org/)    
AC_CONFIG_SRCDIR(src/main.c)
  • 切换到data/目录,以你的项目名重命名几个文件:
cd data
mv openmoko-sample.png your-project-name.png
mv openmoko-sample.desktop your-project-name.desktop
  • 修改data/下的Makefile.am文件:
dist_desktop_DATA = your-project-name.desktop
dist_appicon_DATA = your-project-name.png
  • 修改data/下的 Makefile.in文件
dist_desktop_DATA = smart-search.desktop
dist_appicon_DATA = smart-search.png
  • 修改your-project-name.desktop文件:
Name=your-project-name
Encoding=UTF-8
Version=0.0.1
Type=Application
Exec=your-project-name
  • 在your-project-name.desktop文件加入以下的内容,
Icon=your-project-name
  • 切换到src/目录:
cd ..
cd src
  • 修改Makefile.am文件
bin_PROGRAMS = your-project-name	
your_project_name_SOURCES = \				
 		main.c 
your_project_name_LDADD  = @DEPENDENCIES_LIBS@
  • 请将main.c之外的所有.c和.h文件放入其中,并将变量名称中的 '-' 字符修改为 '_' 。

将你的应用程序打包

工具链中有一个脚本用来将应用程序制作为ipkg包。请注意,你并不需要在Neo手机上测试此应用程序 ( 若要在Neo手机上测试此应用程序,只需要使用scp将生成的二进制代码和数据传送到手机上即可),打成ipkg包也是为了方便发布给他人。

om-make-ipkg openmoko-sample2

现在你已经得到了openmoko-sample2_0.1_armv4t.ipk ,你可以使用"scp"将它传输到Neo手机并安装:

scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk

请注意:这个ipkg包并未包含控制信息,例如函数库的依赖关系,所以,如果你想分发此ipkg包,应该加入控制信息文件。你可以在控制信息文件中提供版本号、软件包描述、作者和联系方式等:

om-make-ipkg myapp myapp_control

myapp_control的模板如下:

Package: $appname
Version: 0.1
Description: package built by openmoko toolchain
Section: openmoko/applications
Priority: optional
Maintainer: $USER
Architecture: armv4t
Homepage: http://www.openmoko.org/
Depends: 
Source: ${SRC}

你下一步要参考的内容

使用外部工具链来为Neo构建应用程序比较简单。如果你熟悉这个流程的话,你也会想要参考:

高级主题

使用工具链提供的链接库

向src/Makefile.am文件的 _LDADD 字段加入必要的链接库,示例如下:

openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2

之后,请再次运行

om-conf 

向工具链中安装附加函数库

不久之后,你也许想要编译一个应用程序,这个应用程序依赖于生僻的函数库,而这些函数库并未由预编译的工具链提供。

这种情况下,你可以请求将附加的函数库放入下一版本的OpenMoko工具链,而在那之前,你可以通过如下方式增强现有的工具链。这里演示了如何向工具链中加入一个名为liburiparse的函数库:

cd ~/source
wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2
./configure --host=arm-angstrom-linux-gnueabi --prefix=/usr/local/openmoko/arm
make
make install

使用OE打包应用程序

当你编写了一个很酷的应用程序并想与他人分享,最佳方法是

  1. 上传你的应用程序源代码到公共区域
  2. 提交一个BitBake包到OpenEmbedded,最好通过OpenEmbedded bugtracker

您也可以参考 定制化你的OpenMoko发行版.

问题排除

Personal tools

简介

工具链是一组用来编译代码的工具集,Openmoko有两类不同用途的工具链。

基本工具链:用于开发简单的单一应用程序

为了开发简单的单一应用程序,你可以使用针对Openmoko项目预先构建好的工具链。本文将说明这一工具链的使用方法,它将帮助你一步步的编译项目并最终运行在目标设备上。你应该听过OpenEmbedded,但作为开发此类应用程序的开发人员,你’’’不’’’应该使用OpenEmbedded

OpenEmbedded:用于系统集成和定制发行版

针对系统集成和定制发行版的任务,你应该使用OpenEmbedded,它能通过bootstrapping/build流程建立起自己的交叉编译工具链。系统集成和定制发行版未在本文加以讨论。

基本工具链的用法

基本安装条件

熟悉Linux及其命令行工具是最基本的,你必须有一台x86兼容的、最少有1G磁盘空间的电脑。你也必须要有使用本地编译器来编译程序源码的相关操作经验。同时,假设你有home目录(~)和/usr/local/目录(有需要时,需使用root用户来操作)的写权限。如果你没有上述的权限,请与管理员联系。

你至少应该具有使用安装程序的权限,允许你使用自动工具构建软件包。(比如./configure, make, make install)。

需要安装的部分软件如下:

  • 针对大多数Linux发行版,需要安装如下软件包:
    • autoconf, automake
    • binutils, gcc, gcc-c++
    • libtool
    • ccache
    • intltool
  • 针对 ubuntu (7.10) ,需要安装以下软件包:
sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev ccache libxrender-dev intltool

下载及安装

预构建的工具链可以从 [downloads.openmoko.org]下载:

  • 在计算机中的任一位置建立目标文件夹,但推荐建立下述文件夹:
 mkdir ~/sources
 cd ~/sources
  • 下载与计算机CPU类型(x86_64或i686)匹配的软件包:
 wget http://downloads.openmoko.org/toolchains/openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
or
 wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2


接着,要将它解压缩到文件系统。注意:此软件包必须安装到且会自动安装到/usr/local/openmoko/目录。

  • 切换到超级用户,然后解压缩。(请使用"su",若您使用的是Debian/Ubuntu,请在tar指令前加入"sudo"):
  cd /
  tar -xjvf ~/sources/openmoko-XYZ-arm-linux-gnueabi-toolchain.tar.bz2
  • 在类Debian系统上,你可以使用alien(+fakeroot)来将.tar.bz2文件构建成一个易于卸载的软件包(使用dpkg -i <package.deb>):


  bunzip2 openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.bz2
  gzip openmoko-x86_64-arm-linux-gnueabi-toolchain.tar
  fakeroot alien -d openmoko-x86_64-arm-linux-gnueabi-toolchain.tar.gz
  • 预构建的工具链是针对x86_64或i686的。如果你希望的话,你可以使用OpenEmbedded来建立自己的工具链:
  bitbake meta-toolchain-openmoko

最后,每次使用此工具链时,必须先改变环境变量,这样才会找到此工具链。此工具链提供了一个脚本来做这项工作。

请注意,如果你并没有使用"sh" 或"bash" shell (用"echo $SHELL" 查看) ,那你必须先启动"sh" 或"bash"。

. /usr/local/openmoko/arm/setup-env

构建示例项目

在目标文件夹中 (本文为~/):

  • 复制已下载的示例应用程序源文件:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/
  • 设定环境变量 (记得使用"sh" 或 "bash"):
. /usr/local/openmoko/arm/setup-env
  • 你需要为这个应用程序建立配置文件,这个过程也用来检查你的计算机上的函数库和工具等是否可用。如果这项工作无法完成时,请参考本文的"基本安装环境"一节。
om-conf openmoko-sample2
  • 现在你可以选择性的修改openmoko-sample2/src 中的源码。
  • 要从源代码中构建应用程序,你应该使用"make":
cd openmoko-sample2
make

如果你希望在主机上安装这个程序,作为后续使用的共享库,那么你可以进行如下操作来将它安装到指定目录中:

om-conf --prefix=/usr/local/openmoko openmoko-sample2
cd openmoko-sample2
make install

如何修改示例项目

为了要使用Openmoko-sample2 文件来制作你自己的项目,需要做适度修改:

  • 复制下载的示例应用程序:
cp -r /usr/local/openmoko/source/openmoko-sample2 ~/

  • 重命名文件夹 ( 在这个示例中为"your-project-name") ,并删除旧有的示例文件。
mv openmoko-sample2 your-project-name
cd your-project-name
cd src
rm *.c
  • 将你自己的源代码复制到src/目录(本示例中为"your-sources"):
cp your-sources .
cd ..
  • 现在,在主目录下,修改autogen.sh:
PKG_NAME="your-project-name"
  • 修改configure.ac文件("main.c"应该是项目中的主程序文件)
AC_INIT(your-project-main, 0.0.1, http://www.openmoko.org/)    
AC_CONFIG_SRCDIR(src/main.c)
  • 切换到data/目录,以你的项目名重命名几个文件:
cd data
mv openmoko-sample.png your-project-name.png
mv openmoko-sample.desktop your-project-name.desktop
  • 修改data/下的Makefile.am文件:
dist_desktop_DATA = your-project-name.desktop
dist_appicon_DATA = your-project-name.png
  • 修改data/下的 Makefile.in文件
dist_desktop_DATA = smart-search.desktop
dist_appicon_DATA = smart-search.png
  • 修改your-project-name.desktop文件:
Name=your-project-name
Encoding=UTF-8
Version=0.0.1
Type=Application
Exec=your-project-name
  • 在your-project-name.desktop文件加入以下的内容,
Icon=your-project-name
  • 切换到src/目录:
cd ..
cd src
  • 修改Makefile.am文件
bin_PROGRAMS = your-project-name	
your_project_name_SOURCES = \				
 		main.c 
your_project_name_LDADD  = @DEPENDENCIES_LIBS@
  • 请将main.c之外的所有.c和.h文件放入其中,并将变量名称中的 '-' 字符修改为 '_' 。

将你的应用程序打包

工具链中有一个脚本用来将应用程序制作为ipkg包。请注意,你并不需要在Neo手机上测试此应用程序 ( 若要在Neo手机上测试此应用程序,只需要使用scp将生成的二进制代码和数据传送到手机上即可),打成ipkg包也是为了方便发布给他人。

om-make-ipkg openmoko-sample2

现在你已经得到了openmoko-sample2_0.1_armv4t.ipk ,你可以使用"scp"将它传输到Neo手机并安装:

scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
ssh root@192.168.0.202 ipkg install openmoko-sample2_0.1_armv4t.ipk

请注意:这个ipkg包并未包含控制信息,例如函数库的依赖关系,所以,如果你想分发此ipkg包,应该加入控制信息文件。你可以在控制信息文件中提供版本号、软件包描述、作者和联系方式等:

om-make-ipkg myapp myapp_control

myapp_control的模板如下:

Package: $appname
Version: 0.1
Description: package built by openmoko toolchain
Section: openmoko/applications
Priority: optional
Maintainer: $USER
Architecture: armv4t
Homepage: http://www.openmoko.org/
Depends: 
Source: ${SRC}

你下一步要参考的内容

使用外部工具链来为Neo构建应用程序比较简单。如果你熟悉这个流程的话,你也会想要参考:

高级主题

使用工具链提供的链接库

向src/Makefile.am文件的 _LDADD 字段加入必要的链接库,示例如下:

openmoko_sample2_LDADD  = @DEPENDENCIES_LIBS@ -lmokogsmd2

之后,请再次运行

om-conf 

向工具链中安装附加函数库

不久之后,你也许想要编译一个应用程序,这个应用程序依赖于生僻的函数库,而这些函数库并未由预编译的工具链提供。

这种情况下,你可以请求将附加的函数库放入下一版本的OpenMoko工具链,而在那之前,你可以通过如下方式增强现有的工具链。这里演示了如何向工具链中加入一个名为liburiparse的函数库:

cd ~/source
wget http://downloads.sourceforge.net/uriparser/uriparser-0.6.0.tar.bz2
./configure --host=arm-angstrom-linux-gnueabi --prefix=/usr/local/openmoko/arm
make
make install

使用OE打包应用程序

当你编写了一个很酷的应用程序并想与他人分享,最佳方法是

  1. 上传你的应用程序源代码到公共区域
  2. 提交一个BitBake包到OpenEmbedded,最好通过OpenEmbedded bugtracker

您也可以参考 定制化你的OpenMoko发行版.

问题排除