• 9725阅读
  • 5回复

qtopia-opensource-4.3.0 在x86编译,编写hello小程序,运行在qvfb上 [复制链接]

上一主题 下一主题
离线wrduan
 
只看楼主 正序阅读 楼主  发表于: 2008-05-16
— 本帖被 XChinux 执行加亮操作(2008-05-16) —
qtopia-opensource-4.3.0 x86环境下程序开发


关于移植qtopia4到开发板上的文章已经很多了,但是还是经常开到有些人对qtopia的本地开发不明白(包括我自己),尤其是从原来版本过度到4版本,很多东西不一样了所以不知道如何入手,我这里将我的入门过程记录如下希望能给大家一些帮助,如有不对的地方请大家及时提出,以免耽误别人的学习,下面的这些内容存属我个人的操作经过记录。


系统:虚拟机安装 fedora 8
          标准的c++开发环境
        gcc 4.1.2
        标准的x86编译过程


1.下载 qtopia,这里我用的是:qtopia-opensource-src-4.3.0.tar.gz 你可以到trolltech 的网站上下载,这个好像我是从 www.qtch.org 的embedded/qtopia 版上下载的。
2. 用root权限添加一个普通用户 devqt。因为qpe是不能在超级用户下执行的(这个应该是是我当时通过root用户执行时系统有提示,当时没有深究,这里谢谢shiroki给我的提醒,我会测试一下,谢谢shiroki)。然后用devqt登录系统。将下载的qtopia-opensource-src-4.3.0.tar.gz放到 devqt用户的目录下。后面的操作如没有特别说明都是在devqt用户环境下执行的。
3.解压文件到devqt下(实际路径是/home/devqt):$tar zxvf qtopia-opensource-src-4.3.0.tar.gz .4.建立一个编译用目录:$mkdir  debugx86build
5.切换到debugx86build目录:$cd debugx86buld
6.执行configure进行配置:$echo yes|../qtopia-opensource-src-4.3.0/configure -debug -profile
7.configure完成后执行 make:$make  #这一步用时比较长,当然和机器配置有关。
8.如果没有错误,完成后就可以执行:$make install  #其实configure完成后系统会提示你下一步怎么做的。
9. 好了可以开始我们的qtopia本地程序的编译了,建立hello例程:$mkdir  -p /home/devqt/hello
10. 编写一个hello.cpp的程序:$vim hello.cpp    #代码内容如下:

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
QApplication app(argc,argv);

QPushButton hello("Hello world");

QObject::connect(&hello, SIGNAL(clicked()), &app, SLOT(quit()));

hello.show();
return app.exec();
}


11. 到hello目录下执行:$/home/devqt/debugx86buld/qtopiacore/target/bin/qmake -project      #生成pro文件,这里因为要生成可以在qvfb里执行的程序,所以要用target目录下的qmake。
12.  然后执行:$/home/devqt/debugx86buld/qtopiacore/target/bin/qmake    #生成Makefile文件
13.  最后执行:$make        #如果没有错误的话。就等着执行了。
14.  开启qvfb:$/home/devqt/debugx86buld/bin/qvfb &15.  运行hello:$hello -qws        #这里一定要加 -qws,
16.  ok,现在可以在qvfb里看见你的小程序吗?如果你的环境和我的一样的话,你应该是看不到的,看看系统的提示信息,说什么?我的是提示 /home/devqt/debugx86buil/qtopiacore/target/lib/fonts/ 找不到。$cp -R /home/devqt/debugx86build/image/lib/fonts //home/devqt/debugx86build/qtopiacore/target/lib
17.  现在再执行就可以看到结果了。

好了整个过程就是这样的。希望大家共同完善Qtopia4的程序开发过程。
补充以下对debugx86build中几个目录的说明:

bin:最重要的是qvfb,其他应该是编译过程中用到的文件,一半是win下的程序。
dimage
image:这个就不用说了,你编译了那么长时间不就是为了这个吗?。
qtopiacore/host:这是编译在非qvfb上运行的工具和文件。
qtopiacore/target:这个是编译要在qvfb上运行的工具和文件。你可以分别用这两个目录下的qmake编译hello程序,然后执行就可以看出结果了。

好了就写这些!
再次重申,不对的地方请大家批评指正,千万别做人身攻击的谩骂,
谢谢!
[ 此贴被wrduan在2008-06-16 15:17重新编辑 ]
离线bestvalentin
只看该作者 5楼 发表于: 2008-06-16
感觉很不好用啊,尤其是做界面的时候,我用4.2.0
离线wrduan
只看该作者 4楼 发表于: 2008-06-16
“I followed you step, but when i input gmake -project, it show me the following information. Do you know how and why?
” 这里用的不是gmake  而应该是qmake。
离线shiroki

只看该作者 3楼 发表于: 2008-06-12
有个小问题。文章中说qpe不能在root用户权限下运行,不知道楼主是怎么得到的这个结论呢。事实上有些功能不用root用户就不能用了哦,比如modem, 普通用户是不能打开串口设备的。
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线linus8866

只看该作者 2楼 发表于: 2008-06-12
I followed you step, but when i input gmake -project, it show me the following information. Do you know how and why?


# GNU Make 3.81
# Copyright (C) 2006  Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.
# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

# This program built for i386-redhat-linux-gnu

# Make data base, printed on Thu Jun 12 13:17:04 2008

# Variables

# automatic
<D = $(patsubst %/,%,$(dir $<))
# automatic
?F = $(notdir $?)
# default
CWEAVE = cweave
# automatic
?D = $(patsubst %/,%,$(dir $?))
# automatic
@D = $(patsubst %/,%,$(dir $@))
# automatic
@F = $(notdir $@)
# makefile
CURDIR := /home/linus/hello
# makefile
SHELL = /bin/sh
# default
RM = rm -f
# default
CO = co
# environment
_ = /usr/bin/gmake
# default
PREPROCESS.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -F
# default
LINK.o = $(CC) $(LDFLAGS) $(TARGET_ARCH)
# default
OUTPUT_OPTION = -o $@
# default
COMPILE.cpp = $(COMPILE.cc)
# makefile
MAKEFILE_LIST :=
# default
LINK.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
CC = cc
# default
CHECKOUT,v = +$(if $(wildcard $@),,$(CO) $(COFLAGS) $< $@)
# environment
LESSOPEN = |/usr/bin/lesspipe.sh %s
# default
CPP = $(CC) -E
# default
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
PATH = /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/arm/3.3.2/bin:/usr/build/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# default
LD = ld
# default
TEXI2DVI = texi2dvi
# default
YACC = yacc
# default
COMPILE.mod = $(M2C) $(M2FLAGS) $(MODFLAGS) $(TARGET_ARCH)
# default
ARFLAGS = rv
# default
LINK.r = $(FC) $(FFLAGS) $(RFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
LINT = lint
# default
COMPILE.f = $(FC) $(FFLAGS) $(TARGET_ARCH) -c
# default
LINT.c = $(LINT) $(LINTFLAGS) $(CPPFLAGS) $(TARGET_ARCH)
# default
YACC.y = $(YACC) $(YFLAGS)
# default
AR = ar
# default
.FEATURES := target-specific order-only second-expansion else-if archives jobserver check-symlink
# default
TANGLE = tangle
# environment
LS_COLORS = no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
# default
GET = get
# automatic
%F = $(notdir $%)
# default
COMPILE.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
CTANGLE = ctangle
# default
.LIBPATTERNS = lib%.so lib%.a
# default
LINK.C = $(LINK.cc)
# environment
PWD = /home/linus/hello
# default
LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_MACH)
# default
PREPROCESS.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -F
# default
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# environment
G_BROKEN_FILENAMES = 1
# default
LINK.s = $(CC) $(ASFLAGS) $(LDFLAGS) $(TARGET_MACH)
# environment
HOME = /root
# environment
XDG_SESSION_COOKIE = b8e34897de5aa12483c05800484fed00-1213290938.665956-1644600665
# environment
LOGNAME = root
# automatic
^D = $(patsubst %/,%,$(dir $^))
# environment
HOSTNAME = localhost.localdomain
# environment
SSH_ASKPASS = /usr/libexec/openssh/gnome-ssh-askpass
# default
MAKE = $(MAKE_COMMAND)
# environment
SHLVL = 1
# default
AS = as
# default
PREPROCESS.S = $(CC) -E $(CPPFLAGS)
# default
COMPILE.p = $(PC) $(PFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
MAKE_VERSION := 3.81
# environment
USER = root
# default
FC = f77
# makefile
.DEFAULT_GOAL :=
# automatic
%D = $(patsubst %/,%,$(dir $%))
# default
WEAVE = weave
# default
MAKE_COMMAND := gmake
# default
LINK.cpp = $(LINK.cc)
# default
F77 = $(FC)
# environment
OLDPWD = /root
# default
.VARIABLES :=
# default
PC = pc
# automatic
*F = $(notdir $*)
# default
COMPILE.def = $(M2C) $(M2FLAGS) $(DEFFLAGS) $(TARGET_ARCH)
# default
LEX = lex
# makefile
MAKEFLAGS = rp
# environment
MFLAGS = -rp
# automatic
*D = $(patsubst %/,%,$(dir $*))
# environment
MAIL = /var/spool/mail/root
# default
LEX.l = $(LEX) $(LFLAGS) -t
# automatic
+D = $(patsubst %/,%,$(dir $+))
# default
COMPILE.r = $(FC) $(FFLAGS) $(RFLAGS) $(TARGET_ARCH) -c
# automatic
+F = $(notdir $+)
# default
M2C = m2c
# default
MAKEFILES :=
# default
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# automatic
<F = $(notdir $<)
# default
CXX = g++
# default
COFLAGS =
# default
COMPILE.C = $(COMPILE.cc)
# automatic
^F = $(notdir $^)
# default
COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_MACH) -c
# default
LINK.F = $(FC) $(FFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# default
SUFFIXES :=
# environment
HISTSIZE = 1000
# default
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
# default
COMPILE.s = $(AS) $(ASFLAGS) $(TARGET_MACH)
# default
.INCLUDE_DIRS = /usr/include /usr/local/include /usr/include
# environment
INPUTRC = /etc/inputrc
# environment
MAKELEVEL := 0
# default
MAKEINFO = makeinfo
# default
TEX = tex
# environment
LANG = en_US.UTF-8
# environment
TERM = linux
# default
F77FLAGS = $(FFLAGS)
# default
LINK.f = $(FC) $(FFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# variable set hash-table stats:
# Load=106/1024=10%, Rehash=0, Collisions=6/130=5%

# Pattern-specific Variable Values

# No pattern-specific variable values.

# Directories

# . (device 2059, inode 192166): 4 files, no impossibilities.

# 4 files, no impossibilities in 1 directories.

# Implicit Rules

# No implicit rules.

# Files

# Not a target:
.SUFFIXES:
#  Implicit rule search has not been done.
#  Modification time never checked.
#  File has not been updated.

# Not a target:
Makefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Implicit rule search has been done.
#  File does not exist.
#  File has been updated.
#  Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# Not a target:
makefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Implicit rule search has been done.
#  File does not exist.
#  File has been updated.
#  Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# Not a target:
.DEFAULT:
#  Implicit rule search has not been done.
#  Modification time never checked.
#  File has not been updated.

# Not a target:
ject:
#  Implicit rule search has not been done.
#  File is very old.
#  File has been updated.
#  Successfully updated.

# Not a target:
GNUmakefile:
#  A default, MAKEFILES, or -include/sinclude makefile.
#  Implicit rule search has been done.
#  File does not exist.
#  File has been updated.
#  Failed to be updated.
# variable set hash-table stats:
# Load=0/32=0%, Rehash=0, Collisions=0/0=0%

# files hash-table stats:
# Load=6/1024=1%, Rehash=0, Collisions=0/16=0%
# VPATH Search Paths

# No `vpath' search paths.

# No general (`VPATH' variable) search path.

# # of strings in strcache: 0
# # of strcache buffers: 0
# strcache size: total = 0 / max = 0 / min = 4096 / avg = 0
# strcache free: total = 0 / max = 0 / min = 4096 / avg = 0

# Finished Make data base on Thu Jun 12 13:17:04 2008
离线wrduan
只看该作者 1楼 发表于: 2008-05-16
很多人都是在摸索着学习,希望那些已经很流畅的进行qtopia4开发人的高人可以给些总结性的帮助。
快速回复
限100 字节
 
上一个 下一个