编译microwindow(nano-X) 及flnx-0.18

news/2024/11/25 5:40:34/

来自:

http://blog.chinaunix.net/uid-20595394-id-1619435.html

http://blog.chinaunix.net/uid-20595394-id-1619427.html


先编译microwindows,然后flnx。

说明:编译freetype库时,在freetype-x.x.xx/builds/unix/libtool中需要指定ranlib gcc ar strip等交叉编译工具的绝对路径。编译microwindows时需要去掉PCFGZ,FNTGZ字体的支持。
安装JPEG时
# tar -zxf jpegsrc.v6b.tar.gz
# cd jpeg-6b/
# ./configure --prefix=/usr/local/jpeg
# make
# make install-lib
如果你选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹
错误提示:...... /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h
/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/include/jconfig.h’: 没有那个文件或目录
make: *** [install-headers] Error 1
# mkdir /usr/local/jpeg
# mkdir /usr/local/jpeg/include
# mkdir /usr/local/jpeg/lib
# make install-lib
# make install

安装时如果错误提示:
/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/lib/libjpeg.a’: 没有那个文件或目录
make: *** [install-lib] Error 1
创建如下文件夹:
# mkdir /usr/local/jpeg/lib
# make install
/usr/bin/install -c cjpeg /usr/local/jpeg/bin/cjpeg
/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/bin/cjpeg’: 没有那个文件或目录
make: *** [install] Error 1
# mkdir /usr/local/jpeg/bin
/usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/jpeg/man/man1/cjpeg.1
/usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/man/man1/cjpeg.1’: 没有那个文件或目录
make: *** [install] Error 1
# mkdir /usr/local/jpeg/man
# mkdir /usr/local/jpeg/man/man1
# make install
好了,直到安装成功!




microwindows移植ARM-LINUX(s3c2410)小结

很长时间了,最近终于取得了一点进展,今天也有空和心思来写下一点东西,好让自己不会忘记。
在整个的移植过程中遇到了太多的问题,很多小问题可能已经忘记是怎么解决的了(最近发现记忆力下降明显呀:().也就记下几个比较大的问题,花了我很长时间解决的问题。
    我的前面几篇文章里有介绍MICROWINDOWS的下载和解压,以及PC LINUX的安装。但没有涉及ARM LINUX的移植,如果是初次移植建议还是先在PC LINUX上尝试,因为那很容易成功。
   microwin目录:/home/lua/mwinarm     arm-linux-gcc 3.4.1
首先把microwindows-fonts-0.90.tar.gz里面的内容全部释放到mwinarm/fonts/下,这里有TRUETYPE字体文件和中文字体。接着交叉编译一些MICROWIN和到的库。

交叉编译jpeg库(可选)
     JPEG源码:jpegsrc.v6b.tar.gz
     #tar xzvf jpegsrc.v6b.tar.gz
     #cd jpeg-6b
     #mkdir /home/lua/jpeg
     #./configure --prefix=/home/lua/jpeg --exec-prefix=/home/lua/jpeg --enable-shared --enable-static
     修改生成的Makefile
    #The name of your C compiler:
     CC= gcc 改成 CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
    #library (.a) file creation command
   AR= ar rc 改成 AR= /usr/local/arm/3.4.1/arm-linux/bin/ar rc
    #second step in .a creation (use "touch" if not needed)
   AR2= ranlib 改成 AR2= /usr/local/arm/3.4.1/arm-linux/bin/ranlib
     编译,安装
     #make
     #make install
交叉编译freetype库
     freetype源码:freetype-1.3.1.tar.gz
     #tar xzvf freetype-1.3.1.tar.gz
     #mkdir /home/lua/freetype
     #cd freetype-1.3.1
     #./configure --host=arm-linux --prefix=/home/lua/freetype
     修改CC为arm-linux-gcc
     #vi lib/arch/unix/Makefile
     #CC = gcc 改成 arm-linux-gcc
     另外如果出现test错误,修改Makefile,不要编译test,这只是XLIB的example
     编译,安装
     #make
     #make install

修改mwinarm/config,编译移植
    复制mwinarm/Configs/config.fb到mwinarm下,以这个为蓝本修改config。
    #cd mwinarm
    #cp Configs/config.fb config
    #vi config
CONFIG文件里面就是编译控制选项,里面东西很多,我只挑主要的讲,后面会附一张我的config文件
    //体系选择
    ARCH = LINUX-ARM
    BIGENDIAN = N
    //编译选项
    OPTIMIZE = Y
    DEBUG      = N
    VERBOSE = N
THREADSAFE = Y
    //LCD的BPP
    SCREEN_PIXTYPE    = MWPF_TRUECOLOR565
    //JPEG选项
HAVE_JPEG_SUPPORT        = Y
INCJPEG     = /home/lua/jpeg/include
LIBJPEG      = /home/lua/jpeg/lib/libjpeg.a
    //truetype
    HAVE_FREETYPE_SUPPORT    = Y
    INCFTLIB                 = /home/lua/freetype/include
    LIBFTLIB                 = /home/lua/freetype/lib/libttf.so
FREETYPE_FONT_DIR    = "/home/lua/mwinarm/fonts/truetype"
    //汉字库
HAVE_HZK_SUPPORT         = Y
HZK_FONT_DIR             = "/home/lua/mwinarm/fonts/chinese"
    //GB2312
    HAVE_GB2312_SUPPORT      = Y
    //FRAMEBUFFER选项
    FRAMEBUFFER              = Y(这是必须的)
    最后MOUSE和KEYBOARD,根据你的实际情况选择。

    #make
    如果你不出错,可以说你人品太好了。反正我出了一些错,通过网上查找,问广大网友和前辈。

错误修改:
    impossible constraint in `asm',
    这个错误是由于FD_ZERO,FD_SET等函数引起的,如果你再深查的话,你会发现其实这几个函数都是宏,最后的定义在include/bits/select.h里面.这个错误是由于包括了错误的头文件,我们应该用ARM-LINUX下面的3.4.1/arm-linux/include/bits/select.h 替换掉/usr/include/bits/select.h。如果你想弄清楚为什么会出现这么个错误的话,你不妨比对一下这两个文件。结果就在眼前, :)
    
    
    
    
    
   
   
   
    接上篇:Makefile附件
   
 ##################################################################
ARCH                     = LINUX-ARM
BIGENDIAN                = N
ARMTOOLSPREFIX           = arm-linux-

##################################################################
# Compiling options
##################################################################
OPTIMIZE                 = Y
DEBUG                    = N
VERBOSE                  = N
THREADSAFE               = Y

####################################################################
# Libraries to build: microwin, nano-X, nanowidget, object frameworks
####################################################################
MICROWIN                 = Y
NANOX                    = Y
SHAREDLIBS               = N
OBJFRAMEWORK             = N


####################################################################
#
# Demos to build
#
####################################################################
MICROWINDEMO             = Y
NANOXDEMO                = Y

####################################################################
#
# Applications to build
#
####################################################################
NANOWM                   = Y

####################################################################
#
# The pixeltype of the native hardware or underlying graphics library.
# This definition defines the PIXELVAL to be 32, 16 or 8 bits wide.
# If using Linux framebuffer, set to MWPF_TRUECOLOR0888, and use fbset.
# It also enables GdArea/GrArea for this particular pixel packing format.
#
# define MWPF_PALETTE       /* pixel is packed 8 bits 1, 4 or 8 pal index*/
# define MWPF_TRUECOLOR8888 /* pixel is packed 32 bits 8/8/8/8 truecolor w/alpha*/
# define MWPF_TRUECOLOR0888 /* pixel is packed 32 bits 8/8/8 truecolor*/
# define MWPF_TRUECOLOR888 /* pixel is packed 24 bits 8/8/8 truecolor*/
# define MWPF_TRUECOLOR565 /* pixel is packed 16 bits 5/6/5 truecolor*/
# define MWPF_TRUECOLOR555 /* pixel is packed 16 bits 5/5/5 truecolor*/
# define MWPF_TRUECOLOR332 /* pixel is packed 8 bits 3/3/2 truecolor*/
#
####################################################################
SCREEN_PIXTYPE           = MWPF_TRUECOLOR565

####################################################################
#
# NanoX: Put Y to the following line to link the nano-X application
# with the server. This is required for ELKS, if no network is present,
# or for speed or debugging. This affects the nano-X server only.
#
####################################################################
LINK_APP_INTO_SERVER     = N

####################################################################
# Shared memory support for Nano-X client/server protocol speedup
####################################################################
HAVE_SHAREDMEM_SUPPORT   = N

####################################################################
#
# File I/O support
# Supporting either below drags in libc stdio, which may not be wanted
#
####################################################################
HAVE_FILEIO              = Y

####################################################################
# BMP, GIF reading support
####################################################################
HAVE_BMP_SUPPORT         = Y
HAVE_GIF_SUPPORT         = Y
HAVE_PNM_SUPPORT         = Y
HAVE_XPM_SUPPORT         = Y

####################################################################
# JPEG support through libjpeg, see README.txt in contrib/jpeg
####################################################################
HAVE_JPEG_SUPPORT        = Y
INCJPEG                  = /home/lua/jpeg/include
LIBJPEG                  = /home/lua/jpeg/lib/libjpeg.a

####################################################################
# PNG support via libpng and libz
####################################################################
HAVE_PNG_SUPPORT         = N
INCPNG                   = /usr/include
LIBPNG                   = /usr/lib/libpng.a
LIBZ                     = /usr/lib/libz.a

####################################################################
# TIFF support through libtiff
####################################################################
HAVE_TIFF_SUPPORT        = N
INCTIFF                  = /usr/include
LIBTIFF                  = /usr/lib/libtiff.a

####################################################################
# native .fnt loadable font support
####################################################################
HAVE_FNT_SUPPORT         = Y
HAVE_FNTGZ_SUPPORT       = N
FNT_FONT_DIR             = "/home/lua/mwinarm/fonts/bdf"

####################################################################
# T1 adobe type1 font support thru t1lib
####################################################################
HAVE_T1LIB_SUPPORT       = N
INCT1LIB                 = /usr/include
LIBT1LIB                 = /usr/lib/libt1.a

####################################################################
# TrueType font support thru FreeType 1.x
####################################################################
HAVE_FREETYPE_SUPPORT    = Y
INCFTLIB                 = /home/lua/freetype/include
LIBFTLIB                 = /home/lua/freetype/lib/libttf.so
FREETYPE_FONT_DIR        = "/usr/lua/mwinarm/fonts/truetype"

####################################################################
# Support for many kinds of font thru FreeType 2.x
# Must also set FREETYPE_FONT_DIR in the Freetype 1.x section
####################################################################
HAVE_FREETYPE_2_SUPPORT = N
INCFT2LIB                = /usr/include
LIBFT2LIB                = /usr/lib/libfreetype.a

####################################################################
# PCF font support
# Selecting HAVE_PCFGZ_SUPPORT will allow you to directly read
# .pcf.gz files, but it will add libz to the size of the server
####################################################################
HAVE_PCF_SUPPORT         = Y
HAVE_PCFGZ_SUPPORT       = N
PCF_FONT_DIR             = "/home/lua/mwinarm/fonts/pcf"

####################################################################
# Chinese Han Zi Ku loadable font support
####################################################################
HAVE_HZK_SUPPORT         = Y
HZK_FONT_DIR             = "/home/lua/mwinarm/fonts/chinese"

####################################################################
# Chinese BIG5 compiled in font support (big5font.c)
####################################################################
HAVE_BIG5_SUPPORT        = N

####################################################################
# Chinese GB2312 compiled in font support (gb2312font.c)
####################################################################
HAVE_GB2312_SUPPORT      = Y

####################################################################
# Japanese JISX0213 compiled in font support (jisx0213-12x12.c)
####################################################################
HAVE_JISX0213_SUPPORT    = N

####################################################################
# Korean HANGUL font support (jo16x16.c)
####################################################################
HAVE_KSC5601_SUPPORT     = N

####################################################################
# Japanese EUC-JP support using loadable MGL font
####################################################################
HAVE_EUCJP_SUPPORT       = N
EUCJP_FONT_DIR           = "fonts/japanese"

####################################################################
# Generate screen driver interface only with no fonts or clipping
####################################################################
NOFONTSORCLIPPING        = N

####################################################################
#
# Window move algorithms for Microwindows
# Change for tradeoff between cpu speed and looks
# ERASEMOVE repaints only backgrounds while window dragging, quicker.
# Otherwise an XOR redraw is used for window moves only after button up,
# quickest (should set for ELKS)
# UPDATEREGIONS paints in update clipping region only for better look and feel
#
####################################################################
ERASEMOVE                = Y
UPDATEREGIONS            = Y

####################################################################
#
# Link with Gray Palette (valid only for 4bpp modes)
#
####################################################################
GRAYPALETTE              = N

####################################################################
#
# If the platform is running UNIX, Linux or RTEMS...
#
####################################################################
ifneq ($(ARCH), ELKS)

# X Window screen, mouse and kbd drivers
X11                      = N

ifeq ($(X11), Y)
# startup screen width, height, (depth for palette mode only)
SCREEN_WIDTH             = 640
SCREEN_HEIGHT            = 480
SCREEN_DEPTH             = 4

# You may want to turn this on for XFree86 4.x or if your backing store
# isn't functioning properly
USE_EXPOSURE        = Y

else

# framebuffer screen driver (linear and/or vga 4 planes)
# set VTSWITCH to include virtual terminal switch code
# set FBREVERSE to reverse bit orders in 1,2,4 bpp
FBVGA                    = N
FRAMEBUFFER              = Y
FBVGA                    = N
VTSWITCH                 = N
FBREVERSE                = N

# set HAVETEXTMODE=Y for systems that can switch between text & graphics.
# On a graphics-only embedded system, such as Osprey and Embedded
# Planet boards, set HAVETEXTMODE=N
HAVETEXTMODE             = N

# svgalib screen driver
VGALIB                   = N

# direct VGA hardware access screen driver
HWVGA                    = N

####################################################################
# Mouse drivers
# GPMMOUSE    gpm mouse
# SERMOUSE    serial Microsoft, PC, Logitech, PS/2 mice (/dev/psaux)
# SUNMOUSE    Sun Workstation mouse (/dev/sunmouse)
# NOMOUSE    no mouse driver
#
# Touchscreen drivers
# IPAQMOUSE    Compaq iPAQ, Intel Assabet (/dev/h3600_tsraw)
# ZAURUSMOUSE    Sharp Zaurus (/dev/sharp_ts)
# TUXMOUSE    TuxScreen (/dev/ucb1x00-ts)
# ADSMOUSE    Applied Data Systems GC+ (/dev/ts)
# ADS7846MOUSE            ADS7846 chip, PSI OMAP Innovator (/dev/innnovator_ts)
# EPMOUSE    Embedded Planet (/dev/tpanel)
# VHMOUSE    Vtech Helio (/dev/tpanel)
# MTMOUSE    MicroTouch serial (/dev/ttyS1)
# PSIONMOUSE    Psion 5 (/dev/touch_psion)
# YOPYMOUSE    Yopy (/dev/yopy-ts)
# HARRIERMOUSE    NEC Harrier (/dev/tpanel)
####################################################################
GPMMOUSE                 = N
SERMOUSE                 = N
SUNMOUSE                 = N
NOMOUSE                  = N
IPAQMOUSE                = Y
ZAURUSMOUSE              = N
TUXMOUSE                 = N
ADSMOUSE                 = N
ADS7846MOUSE             = N
EPMOUSE                  = N
VHMOUSE                  = N
MTMOUSE                  = N
PSIONMOUSE               = N
YOPYMOUSE                = N
HARRIERMOUSE             = N

# keyboard or null kbd driver
TTYKBD                   = N
SCANKBD                  = N
PIPEKBD                  = N
IPAQKBD                  = N
LIRCKBD                  = N
NOKBD                    = Y

endif

####################################################################
# Screen driver specific configuration
# SA1100_LCD_LTLEND 4bpp driver with arm SA1100 LCD controller
# INVERT4BPP 4bpp inverted pixel driver for VTech Helio
####################################################################
SA1100_LCD_LTLEND        = N
INVERT4BPP               = N

####################################################################
#
# If the platform is a RTEMS box ....
#
####################################################################
ifeq ($(ARCH), RTEMS)

# Location & BSP information of the RTEMS build
RTEMS_BUILD              = /tools/build-i386-elf-rtems
RTEMS_BSP                = pc386
LINK_APP_INTO_SERVER     = Y

endif

endif

####################################################################
#
# If the platform is an ELKS box ...
#
####################################################################
ifeq ($(ARCH), ELKS)

# Higher speed asm driver, c driver of hercules screen driver
ASMVGADRIVER             = Y
CVGADRIVER               = N
HERCDRIVER               = N
DBGDRIVER                = N

# Mouse support
SERMOUSE                 = Y

endif







FLNX(FLTK)的编译
好久没有编译FLNX(FLTK的嵌入式版本)了,这次公司要把FLNX的source package合并到Microwindows/nano-X的Source package中,在我单独编译FLNX的源码包时出错,最后还是解决了,我把具体的编译步骤写下来以便以后记得^_^: 我的配置: OS: FC6 Host linux Cross-Compiler: arm-linux-gcc 3.4.1 toolchain Microwindows: Microwindows-0.91 source code 1. 获取源代码包(这个就不用说了吧),如: flnx-0.18-tar.gz 2. 解压源码包, 如: tar zxvf flnx-0.18-tar.gz ---会在当前所在目录下生成一个flnx的目录 3. 确保你曾经编译过Microwindow-0.91,因为在编译过Microwindow时会生成一个lib的目录,存放Microwindows 的.a/.so文件 4. 在flnx目录下,运行configue,如: [root@localhost GUI]: ./configure --with-microwin=/home/magic/GUI/mw091full/microwindows-0.91/src --libdir=/home/magic/GUI/mw091full/microwindows-0.91/src/lib --includedir=/home/magic/GUI/mw091full/microwindows-0.91/src/include --prefix=/home/magic/GUI/mw091full/microwindows-0.91 --host=arm-linux [按回车] 5. 会提示有error, 错误在Fl_Animator.cxx和Fl_Animator.H文件中, 在Fl_Animator.cxx文件中的第31行改为: Fl_Animator::Fl_Animator(char *const *image, int X, int Y, int fcound, int fwidth, int fheight, int interval, const char *label=0) 中的第8个参数const char *label=0,去掉'=0'就可以了。 6. 保存并退回到上一层目录,执行一下make clean, 再make就应该能编译通过了^_^.


http://www.ppmy.cn/news/586605.html

相关文章

ARM-交叉编译器各版本的区别

转载地址:http://blog.csdn.net/dragon101788/article/details/17456019 1、EABIarm-2008q3-39-arm-none-eabi Sourcery G Lite 2008q3-39 All versions... Sourcery G for ARM EABI is for use in bare-metal and/or RTOS environments.(适用于编译…

SpringBoot + Elasticsearch + Kibana (7.8.1)入门应用

一、下载安装 ElasticSearch 下载地址 …/elasticsearch-7.8.1/bin 的 elasticsearch.bat …/elasticsearch-7.8.1/config/elasticsearch.yml //# 主要配置 network.host: 127.0.0.1 http.port: 9200 //# 解决跨域访问 http.cors.enabled: true http.cors.allow-origin: &quo…

几种开源TCP/IP协议概述--LwIP,uIP,TinyTcp和uC/IP

1、BSD TCP/IP协议栈 BSD栈历史上是商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而…

算法设计与分析:Word Ladder(Week 4)

学号:16340008 题目:127. Word Ladder Question: Given two words (beginWord and endWord), and a dictionarys word list, find the length of shortest transformation sequence from beginWord to endWord, such that: Only one letter can be ch…

DOM系列:DOM树和遍历DOM

上一节,咱们整理了DOM系列中的第一篇,主要介绍浏览器与DOM相关的知识。从标题中我们可以看出来,今天所要学的东西包含两个部分,第一部分是DOM树,第二部分是遍历DOM。如果你和我一样对于DOM树和遍历DOM是初次接触&#…

win10嵌入式linux,基于Microwindows的嵌入式Linux轻量级图形应用库的

嵌入式Linux系统的很多应用领域,诸如消费类电子产品、测量控制设备等,图形用户界面不仅在技术上是软件系统设计的一个重点,而且在商业上也关系到用户对该产品接受的程度。本文引用地址:http://www.eepw.com.cn/article/201610/305…

嵌入linux的广泛应用(转)

嵌入linux的广泛应用(转) 现在 Linux 广泛用于各类计算应用,不仅包括 微型 Linux 腕表、手持设备(PDA 和蜂窝电话)、因特网装置、瘦客户机、防火墙、工业机器人和电话基础设施设备,甚至还包括了基于集群的超级计算机。让我们看一下…

基于Docker构建ELK以及集成SpringBoot+Kafka发送日志完整流程

本文所用系统环境:CentOS7 docker安装不在阐述 elk所有版本全部基于6.5.1 安装到集成一共三个大步骤: 一.安装ELK 二.安装kafka 三.SpringBoot集成kafka传输日志 一.安装ELK 1.kibana 直接执行以下代码,会自动执行安装以及启动全部过程 docker run -d -p 5601:5601 --name k…