Chinaunix首页 | 论坛 | 博客
  • 博客访问: 37779
  • 博文数量: 13
  • 博客积分: 398
  • 博客等级: 一等列兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-27 20:29
文章分类

全部博文(13)

文章存档

2011年(1)

2010年(12)

分类:

2010-07-12 11:47:02

minigui交叉编译成功!
      今天总算把minigui和它的示例包用arm-linux-gcc编译成功了.主要参考了<>(作者:北京理工大学 方宁 马忠梅)这篇文章.同时感谢网友sun68对编译过程中遇到的问题的指教!
      整个编译过程如下:
      1.编译平台的搭建.在宿主机上安装Redhat9.0,使用的交叉编译工具链是cross-2.95.3.tar.bz2.安装过程不再赘述.
      2.交叉编译MiniGUI.我使用的是libminigui-1.3.3,mde-1.3.1,minigui-res- 1.3.3.都可在飞漫网站上下载
      先编译库文件.解压到/tmp/arm-minigui/ 下,进入libminigui-1.3.3.运行./configure脚本
CC=arm-linux-gcc ./configure \
      --target= arm-linux \
      --prefix=/usr/local/arm/arm-linux \ 
      --build= arm-linux \
      --host=i686-pc-linux-gnu --enable-lite \
        CC 用来指定所使用的编译器这里使用的arm-linux-gcc 就是被安装到宿主机上的交叉编译器
        --target 选项用于指定目标平台这里使用arm-linux
        --prefix选项用于指定MiniGUI函数库的安装路径默认的安装路径是/usr/local 而在这里应该是所使用的交叉编译环境中系统头文件目录include和库目录lib 所在的目录本例中就是/usr/local/arm/arm-linux(这样一来MiniGUI的函数库和头文件也将被分别安装到交叉编译环境中的 lib 和include 目录中在后续进行MiniGUI 应用程序的交叉编译时就可以正确地找到MiniGUI 的头文件和函数库了)
        --build 选项与--arget一样为arm-linux
        --host选项用来指明宿主机的类型这里使用i686-pc-linux-gnu 即可
        最后一个选项--enable-lite 用来指定生成基于进程的MiniGUI-Lite 版本而不生成基于线程的MiniGUIThreads版本目前MiniGUI 函数库有两种版本Threads 版本和Lite 版本,1.3.3版默认生成Threads 版本,例中编译生成Lite 版本两种版本之间的具体差异请参看MiniGUI 用户手册.
        如果运行./configure 脚本成功就会生成定制的Makefile 文件然后可以继续执行make 和make install命令编译并安装libminigui 在执行make install操作时用户必须具用root 权限安装成功后MiniGUI 的函数库和头文件以及配置文件等资源将被安装到/usr/local/arm/arm-linux 目录中具体情况为函数库被装在lib/子目录中头文件被装在include/ 子目录中手册被装在man/ 子目录中配置文件被装在etc/ 子目录中.
        然后编译minigui-res-1.3.3.解压minigui-res-1.3.3.tar.gz 进入相应目录这里需要说明的是在执行make install操作之前需要对目录中的configure.linux文件做一些修改打开configure.linux文件你会发现prefix选项部 分的默认值为$(TOPDIR)/usr/local 需要将这里修改为refix=$(TOPDIR)/usr/local/arm-linux/arm-linux 这样执行make install 操作之后安装脚本会自动把MiniGUI资源文件安装到/usr/local/arm-linux/arm-linux/lib/minigui/res /目录下.
        最后再来编译mde-1.3.1.解压mde-1.3.1.tar.gz 进入相应目录首先修改目录下的configure.in 文件将其中AC_CHECK_HEADERS(minigui/commmon.h, have_libminigui=yes, foo=bar)改为
AC_CHECK_HEADERS($prefix/include/minigui/common.h,have_libminigui=yes, foo=bar) 以防止编译时系统无法找到头文件从而把have_libminigui 赋值为no .然后执行autogen.sh 脚本重新生成configure脚本执行
         CC=arm-linux-gcc \
               CFLAGS="-l/usr/local/arm/arm-linux/include -Dlinux -D_linux_ -Dunix" \
               LDFLAGS="-Wl,-L/usr/local/arm/arm-linux/lib"
               ./configure \
               --target=arm-linux \
               --prefix=/usr/local/arm-linux/arm-linux \
               --build=arm-linux \
               --host=i686-pc-linux-gnu \ 
               --enable-lite \
各选项的意义与前面部分相同执行成功后在该目录下会生成一个新的Makefile 文件修改Makefile 文件中的COMMON_SUBDIRS 部分将其中的notebook tools,controlpanel 例子暂时删除否则编译这几个程序时会提示找不到popt.h 和libpopt.so 而这些popt 头文件和库文件需要自己从网上下载到相应的目录当中执行make操作完成演示程序的编译这时可以发现在每一个demo 目录下都会生成一个可执行程序.
阅读(2354) | 评论(0) | 转发(0) |
0

上一篇:samba交叉编译

下一篇:

给主人留下些什么吧!~~