minigui移植到tq S3c2440
2012-05-18 20:29
399 查看
原贴 http://hi.baidu.com/li_yuangong/blog/item/8c8272b5f5accce631add140.html minigui移植到tq2440 环境:虚拟机+RHEL4+linux2.6.30内核 开发板:tq2440以及天嵌开发光盘自带的交叉编译器,即/opt/EmbedSky/4.3.3 (一)准备工作 下载软件包 libminigui-1.6.10.tar.gz --主要的库文件(http://cdnetworks-kr-1.dl.sourceforge.net/project/minigui/minigui/GPL-V1.6.10/libminigui-1.6.10.tar.gz) mg-samples-1.6.10.tar.gz --示例代码(http://cdnetworks-kr-2.dl.sourceforge.net/project/minigui/minigui/GPL-V1.6.10/mg-samples-1.6.10.tar.gz) minigui-res-1.6.10.tar.gz --资源文件(http://cdnetworks-kr-2.dl.sourceforge.net/project/minigui/minigui/GPL-V1.6.10/minigui-res-1.6.10.tar.gz) mde-1.6.10.tar.gz(http://cdnetworks-kr-2.dl.sourceforge.net/project/minigui/minigui/GPL-V1.6.10/mde-1.6.10.tar.gz)— — 演示文件 在(pc机)/创建一个minigui-free的目录,然后把这些载在的软件包放在该目录下,在分别解压缩。 再在 /minigui-free下创建一个miniguitmp的目录,用于安装编译以后的库文件。 (二)编译 libminigui 库文件 先确认编译器环境正确, arm-linux-gcc -v [root@RED26DVEVM /]# arm-linux-gcc -v Using built-in specs. Target: arm-none-linux-gnueabi Configured with: /scratch/maxim/arm-lite/src-4.3-arm-none-linux-gnueabi-lite/gcc-4.3/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --with-gnu-as --with-gnu-ld --with-specs='%{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables}' --enable-languages=c,c++ --enable-shared --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2009q1-176' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maxim/arm-lite/obj-4.3-arm-none-linux-gnueabi-lite/host-libs-2009q1-176-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maxim/arm-lite/install-4.3-arm-none-linux-gnueabi-lite/arm-none-linux-gnueabi/bin Thread model: posix gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) 首先修改configure文件,在文件的开头加入交叉编译的路径 CC=/opt/EmbedSky/4.3.3/bin/arm-linux-gcc CPP=/opt/EmbedSky/4.3.3/bin/arm-linux-cpp LD=/opt/EmbedSky/4.3.3/bin/arm-linux-ld AR=/opt/EmbedSky/4.3.3/bin/arm-linux-ar RANLIB=/opt/EmbedSky/4.3.3/bin/arm-linux-ranlib STRIP=/opt/EmbedSky/4.3.3/bin/arm-linux-strip 然后在libminigui-1.6.10目录下建立bash文件mysetup.sh,内容如下: /* mysetup.sh */ ./configure --prefix=/minigui-free/miniguitmp/ \ --host=arm-unknown-linux \ --target=arm-unknown-linux 然后执行[root@localhost libminigui-1.6.10]# ./mysetup.sh 如果配置不成功,则可能是编译器问题。我的就是不成功。 上图中显示的交叉编译器为arm-3.4.1,而不是我们希望的/opt/EmbedSky/4.3.3, 所以临时修改如下: 或者用命令:PATH=$PATH: /opt/EmbedSky/4.3.3 命令: echo $PATH 显示变量路径 如果成功之后[root@localhost libminigui-1.6.10]# make 这一步时间有点长,5分钟左右 [root@localhost libminigui-1.6.10]# make install 这一步就很快了,一闪就完成。执行成功后,这个过程基本上不会有什么错误的。执行make install的时候会把编译以后的资源安装到/minigui-free/miniguitmp中,在这之下会有etc include lib 3个目录产生。libminigui的交叉编译工作就算完成了。 (三 )安装MiniGUI资源 下面安装MiniGUI资源,这些资源包括基本字体、图标、位图和鼠标光标等等。解压minigui-res- 1.6.tar.gz(ar zxf minigui-res-1.6.tar.gz),进入生成目录, 修改configure.linux文件,指明TOPDIR= /minigui/miniguitmp, 执行make install, 执行后会在/minigui/miniguitmp/ 下生成usr/local/lib/minigui/res 相关目录,以下为res目录下的子目录,用户有兴趣可以进入以下目录查看其中的内容: bmp cursor font icon imetab (四)修改/ minigui-free/miniguitmp/etc/MiniGUI.cfg文件 [system] # GAL engine and default options gal_engine=fbcon defaultmode=320x240-16bpp # IAL engine #ial_engine=qvfb #mdev=/dev/input/mice #ial_engine=console ial_engine=dummy mdev=/dev/mouse mtype=IMPS2 [fbcon] defaultmode=320x240-16bpp [qvfb] defaultmode=320x240-16bpp display=0 一般就上面几个地方要修改 然后把MiniGUI.cfg下载到开发板的/etc/目录下: [root@EmbedSky etc]# cp MiniGUI.cfg /etc 把PC上/ minigui-free/miniguitmp/lib中所有的运行库下载到开发板上的/usr/lib目录下: [root@EmbedSky lib]# cp * /usr/lib 把pc机上/minigui-free/miniguitmp/usr/local/lib/minigui/res中的内容拷贝到目标板/usr/local/lib/minigui/res中。res目录下有5个文件夹,一个一个创建和复制很麻烦,可以写一个批处理来做,那样简单多了。至于批处理很简单,这里就不说了。 (五)下面可以在宿主机上编译,然后开发板上运行了。 /* helloWorld.c */ #include <stdio.h> #include<minigui/common.h> #include<minigui/minigui.h> #include<minigui/gdi.h> #include<minigui/window.h> #include <minigui/control.h> static int helloProc(HWND hWnd,int message,WPARAM wParam,LPARAM lParam) { HDC hdc; switch (message) { case MSG_PAINT: hdc = BeginPaint(hWnd); TextOut(hdc,50,50,"Helllo MiniGUi"); EndPaint(hWnd,hdc); return 0; case MSG_CLOSE: DestroyMainWindow(hWnd); PostQuitMessage(hWnd); return 0; } return DefaultMainWinProc(hWnd,message,wParam,lParam); } int MiniGUIMain(int argc,const char* argv[]) { MSG Msg; HWND hMainWnd; MAINWINCREATE CreateInfo; #ifdef _LITE_VERSION SetDesktopRect(0,0,640,480); #endif CreateInfo.dwStyle = WS_VISIBLE|WS_BORDER|WS_CAPTION; CreateInfo.dwExStyle = WS_EX_NONE; CreateInfo.spCaption = "hello"; CreateInfo.hMenu = 0; CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0; CreateInfo.MainWindowProc = helloProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 200; CreateInfo.by = 200; CreateInfo.iBkColor = COLOR_lightwhite; CreateInfo.dwAddData = 0; CreateInfo.hHosting = HWND_DESKTOP; hMainWnd = CreateMainWindow(&CreateInfo); if(hMainWnd == HWND_INVALID) return 1; ShowWindow(hMainWnd,SW_SHOWNORMAL); while(GetMessage(&Msg,hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } MainWindowThreadCleanup(hMainWnd); return 0; } #ifndef _LITE_VERSION #include <minigui/dti.c> #endif /* makefile */ DEP = helloWorld.c SRC_FILE = helloWorld.c CC = /opt/EmbedSky/4.3.3/bin/arm-linux-gcc LIB_MINIGUI = /minigui-free/miniguitmp/lib INCLUDE_MINIGUI = /minigui-free/miniguitmp/include PROJECT_DIR = hello:$(DEP) $(CC) -o helloWorld $(SRC_FILE) -lpthread -lminigui -lsqlite3 -lm -lmgext -lpng -ljpeg -L$(LIB_MINIGUI) -I$(INCLUDE_MINIGUI) #.PHONY: install #install: # cp helloWorld $(PROJECT_DIR)/target/ # @echo "moving the TARGET to ../target ." .PHONY: clean clean: rm helloWorld @echo "it is cleaning." 然后挂载运行,呵呵,有效果了吧!^_^ |
相关文章推荐
- miniGUI移植到s3c2440
- MiniGUI移植s3c2440(三) 搭建pc编译环境
- TQ210移植minigui1.6.6
- MiniGUI移植s3c2440(一)
- MiniGUI移植s3c2440(二)IAL 触摸屏
- MiniGUI-1.6.10在S3C2440上的移植
- Fatfs移植到tq240
- s3c2440的U-boot移植(一)
- S3C2440 VXWORKS移植笔记
- S3C2440移植 u-boot-2016.11
- s3c2440 uda1341声卡驱动与madplay播放器移植
- S3C2440 Linux驱动移植——LED heartbeat
- AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
- U-boot在S3C2440上的移植详解(一)
- linux-2.6.35.3内核移植(s3c2440)
- S3C2440 Linux驱动移植——LED heartbeat
- Linux2.6.34.2在TQ6410上的移植详解(二)
- S3C2440 linux2.6.31移植总结
- linux-2.6.30平台下移植DM9000网卡驱动到TQ2440
- MiniGUI1.6.10交叉编译配置以及开发板移植-Ubunbu11.10