Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1517578
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类: LINUX

2007-07-12 10:45:43

看了不少网上的关于moto e680系列和a1200系列开发环境配置的帖子,对偶帮助颇大现在实际建立一个:
(for linux)
首先,必要的准备工作:
下载ezx-crosstool-0.5.tar.bz2文件http://lsb.blogdns.net/ezx-crosstool
,这个工具是由个人整理的,去掉了与ARM无关的很多脚本,并且限定了需要编译的文件版本,使用起来比较简单。
本机新建了一个用户gcc,准备用于编译,root用户会提示禁止操作的。
这里使用的是在/home/gcc目录下用gcc用户解压:
bunzip2 ezx-crosstool-0.5.tar.bz2
tar xvf ezx-crosstool-0.5.tar
系统会自动生成/home/gcc/ezx-crosstool-0.5这个目录。
在下载如下四个文件,且必须是如下版本:
  
   binutils-2.15.tar.bz2              一组开发工具,包括连接器、汇编器
                                      和其他用于目标文件和档案的工具

   gcc-3.3.6.tar.bz2                  GCC编译器的源代码

   glibc-2.3.2.tar.bz2                提供系统调用和基本函数库

   glibc-linuxthreads-2.3.2.tar.bz2   用于支持POSIX线程的函数库 
  
   在下载如下一个文件:
  
   linux-2.4.26.tar.bz2               Linux核心源代码
  
   全部下载后,放在/home/gcc/ezx-crosstool-0.5/downloads下,打开
/home/gcc/ezx-crosstool-0.5/build.sh文件,内容如下:
  
   #!/bin/sh
   set -ex
   CROSSTOOL_DIR=`pwd`
   TARBALLS_DIR=$CROSSTOOL_DIR/downloads
   RESULT_TOP=$CROSSTOOL_DIR/gcc-arm-iwmmxt
   export TARBALLS_DIR RESULT_TOP
   GCC_LANGUAGES="c,c++"
   export GCC_LANGUAGES
   ...
  
   详细内容以后会解释,这里只注意RESULT_TOP=$CROSSTOOL_DIR/gcc-arm-iwmmxt
这句,这是说明编译后的路径,可以自定义修改。
   如:
   RESULT_TOP=/home/gcc/arm
  
   到这里,准备工作就结束了。
   cd /home/gcc/ezx-crosstool-0.5
   ./build.sh

   我使用的笔记本(2GRAM+PM1.7G)+虚拟机,大概不到1个小时。完成后在系统环境
PATH添加新路径内容。
   export PATH=$PATH:/home/gcc/arm/gcc-3.3.6-glibc-2.3.2/arm-linux/bin
就可以试试编译几个hello world程序,然后拷贝到手机上跑一下试试了。
 
这些仅仅是能够编译命令行的程序,如果需要编译qte或者ezx的图形界面程序,需要另外下载:
dev-ezx-0.2.0,网上关于这个的描述很多,偶就不聒噪了。
 
(for win32)
下载cygwin,最好是完全安装,然后下载上述的ezx-crosstool-0.5文件,并把上面的文件下载到必要的download目录,然后运行build.sh。cygwin在win32环境下,大概需要编译3-4个小时左右,才能把这些arm-linux-gcc,arm-linux-g++编译成功。需要修改.bashrc,在最后一行添加:
#我这里的目录是~/moto/ezx-crosstool-0.5
PATH=$PATH:.:~/moto/ezx-crosstool-0.5/gcc-arm-iwmmxt/gcc-3.3.6-glibc-2.3.2/arm-linux/distributed/bin
export PATH
 
把a1200的/usr/lib整个目录拷贝到:~/moto/dev-ezx-0.2.0/目录,覆盖原有的lib目录。
然后就是准备编译一点gui程序试试了,这个是makefile
EZX_BASE=..
XPREFIX=arm-linux-
CXX=$(XPREFIX)g++
CC=$(XPREFIX)gcc
STRIP=$(XPREFIX)strip
CXXFLAGS=-fno-exceptions -fno-rtti -DQWS -Wall -g
MOC=$(EZX_BASE)/moc/moc
INCLUDE=-I$(EZX_BASE)/include/qt -I$(EZX_BASE)/include/ezx
LIBDIRS=-L$(EZX_BASE)/lib -L$(EZX_BASE)/lib/ezx/lib
##LIBS=-lezxappbase -lezximagebase -lezxjpeg -lipp-jp -lipp-miscGen -lqte-mt
LIBS= -lezxappsdk -lipp-jp -lezxopenwindow -lipp-miscGen -lezxappbase -lqte-mt -lezxjpeg -lezxpm
OBJS=test2.o
APP=test2
all: $(APP)
dist: $(APP).pkg
test2.o: test2.cpp test2.moc
$(APP).pkg: $(APP).o
 $(STRIP) $(APP)/$(APP)
 tar cvfz $(APP).tar.gz $(APP)
 mv $(APP).tar.gz $(APP).pkg
clean:
 rm -f $(OBJS) $(APP)/$(APP) $(APP).pkg *~ $(APP)/*~ *.moc
%.o: %.cpp
 $(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
%.moc: %.cpp
 $(MOC) $< -o $@
$(APP): $(OBJS)
 $(CXX) $^ -o $(APP)/$@ $(LIBDIRS) $(LIBS)
 
这个是cpp:
#include
#include
#include
#include
#include
#include //for dispaly system icon
QTextCodec* utf8_codec = QTextCodec::codecForName("utf-8");
QString un_utf8(const char*ChnStr)
{
 return utf8_codec->toUnicode(ChnStr);
}
int main(int argc, char** argv)
{
 ZApplication app (argc, argv);
 
 RES_ICON_Reader ir;
 QPixmap *pm;
 pm = new QPixmap("Dialog_Complete.gif");
 pm[0] = ir.getIcon("Dialog_Complete.gif", 1); // This is Complete icon
 int reply = ZMessageBox::information(0, pm[0], un_utf8("hello wayne"), un_utf8("你好"), un_utf8("no"), un_utf8("cancel"));
 // use un-utf8 to display Unicode Chinese
 switch(reply)
 {
 case 0:
     ZMessageBox::timerMessage(0, pm[0],un_utf8("Shut down now..."),4);
     break ;
 case 1:
     printf("NO was Pressed\n");
     break;
 case 2:
     printf("Cancel was Pressed\n");
         break;
   }
 return 0;   
}
这是个简单的要死的程序,不做解释了,如有不明白的,看看ezx的头文件。
test2.desktop文件:
[Desktop Entry]
BigIcon=test2.png
Comment=wayne test2 program
Exec=test2.lin
Icon=test2s.png
Name=5M周刊
OsVersion=1.0
Shared=0
Type=Application
 
test2.lin文件:
#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
export EZX_RES_ICON_PATH=/usr/language/icon
chmod +x /mmc/mmca1/.system/QTDownLoad/test2/test2
exec /mmc/mmca1/.system/QTDownLoad/test2/test2
 
这里需要提一下的是:cygwin的emacs用ctrl+x ctrl+c退出不了,呵呵,直接打开cygwin.bat文件,然后在@echo off下面添加:
set CYGWIN=binmode tty ntsec
即可。还是喜欢emacs,这里暂不讨论vi :P。
 
 
阅读(6305) | 评论(13) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-29 09:51:13

你好: 我现在想在A1200上,写个hello world的程序, Linux环境和 相应的工具链都编译好了, 但是不知道怎么找到 a1200手机上的命令行啊? 增么在手机上运行我的 最简单的hello world程序呢? 困扰我好几天了?大侠赐教!

chinaunix网友2008-06-03 10:08:09

你好 我在用j2me开发时遇到了一个问题 怎样用j2me的类实现打开一个应用程序(比如:pdf格式的),如果是j2se可以用Runtime.getRuntime().exec("d:\\Program Files\\Adobe\\Reader 8.0\\Reader\\AcroRd32.exe d:\\test1.pdf ");但是在j2me中怎么实现同样的功能呢

zieckey2008-04-29 21:02:14

找到了 http://download.csdn.net/source/381547这里有连接,可以下载

zieckey2008-04-29 20:55:20

下载ezx-crosstool-0.5.tar.bz2文件http://lsb.blogdns.net/ezx-crosstool 这个工具的连接的打不开阿

chinaunix网友2008-04-05 22:37:36

E680的开发和A1200的开发是不是基本相同,不知道环境搭建这一块会不会有区别,