在redhat9中交叉编译nano-X nxlib和fltk
來自:http://tauruspdj.blog.163.com/blog/static/4312500620080279183197/
1)編譯nano-X(即microwindows-0.91)
2)編譯nxlib0.45
3)編譯fltk-1.1.7
安裝目錄是/usr/local/arm/2.95.3
?準備工作:解壓交叉編譯cross2.95.3到/usr/local/arm并添加路徑
exportPATH=/usr/local/arm/2.95.3/bin:$PATH
?
1 編譯安裝nano-X
主要是修改config文件,
將./src/cinfigs中的 config.fb覆蓋掉./src下的config
再進行適當修改
####################################################################
#Microwindows and Nano-X configuration file
#
# This package canbe configured to run on Linux (MIPS, ARM, POWERPC or x86)
# UNIX,ELKS, DJGPP, or RTEMS.
# On Linux, we've got drivers for Linux 2.xframebuffers, X11, or,
# svgalib for VGA hardware.
# Inaddition, a gpm or direct serial mouse driver can be configured.
#On ELKS, the bios screen driver and serial mouse driver are alwaysused.
#
# Either Microwindows and/or Nano-X can be built.
#Microwindows and Nano-X have several demos.
#
# For MSDOSmakes, see mcmwin.mak andmcnanox.mak
####################################################################
####################################################################
#
#build target platform
#
# Valid ARCH values are:
#
#LINUX-NATIVE
# LINUX-TCC
# LINUX-ARM
# LINUX-MIPS
#LINUX-POWERPC (BIGENDIAN=Y)
# LINUX-SPARC (BIGENDIAN=Y)
#LINUX-SH
# FREEBSD-X86
# SOLARIS (BIGENDIAN=Y)
# TRIMEDIA
#RTEMS
# DJGPP
# ELKS
#
# note: ELKS can't buildclient/server nano-X, nor widgetlib
#
####################################################################
ARCH????????????????????= LINUX-ARM? #LINUX-NATIVE
BIGENDIAN???????????????= N
NATIVETOOLSPREFIX??????? =
ARMTOOLSPREFIX??????????= arm-linux-
MIPSTOOLSPREFIX?????????= mipsel-linux-
POWERPCTOOLSPREFIX??????= powerpc-linux-
SHTOOLSPREFIX???????????= sh-linux-gnu
RTEMSTOOLSPREFIX????????= i386-rtemself-
####################################################################
#
#Compilingoptions
#
####################################################################
OPTIMIZE????????????????= Y
DEBUG???????????????????= N
VERBOSE?????????????????= N
THREADSAFE??????????????= Y? #N
####################################################################
#
#Libraries to build: microwin, nano-X, nanowidget, objectframeworks
#
####################################################################
MICROWIN????????????????= Y
NANOX???????????????????= Y
SHAREDLIBS??????????????= N
OBJFRAMEWORK????????????= N
####################################################################
#
#Demos tobuild
#
####################################################################
MICROWINDEMO????????????= Y
NANOXDEMO???????????????= Y
####################################################################
#
#Applications tobuild
#
####################################################################
NANOWM??????????????????= Y
####################################################################
#
#The pixeltype of the native hardware or underlying graphicslibrary.
# This definition defines the PIXELVAL to be 32, 16 or 8bits wide.
# If using Linux framebuffer, set toMWPF_TRUECOLOR0888, and use fbset.
# It also enables GdArea/GrAreafor this particular pixel packing format.
#
# defineMWPF_PALETTE?????? /* pixel is packed 8bits 1, 4 or 8 pal index*/
# define MWPF_TRUECOLOR8888 /* pixel ispacked 32 bits 8/8/8/8 truecolor w/alpha*/
# defineMWPF_TRUECOLOR0888 /* pixel is packed 32 bits 8/8/8 truecolor*/
#define MWPF_TRUECOLOR888? /* pixel is packed 24 bits 8/8/8truecolor*/
# define MWPF_TRUECOLOR565? /* pixel is packed 16bits 5/6/5 truecolor*/
# define MWPF_TRUECOLOR555? /* pixelis packed 16 bits 5/5/5 truecolor*/
# define MWPF_TRUECOLOR332?/* pixel is packed 8 bits 3/3/2truecolor*/
#
####################################################################
SCREEN_PIXTYPE??????????= MWPF_TRUECOLOR565? #MWPF_TRUECOLOR0888
####################################################################
#
#NanoX: Put Y to the following line to link the nano-X application
#with the server.? This is required for ELKS, if no network ispresent,
# or for speed or debugging.? This affects thenano-X serveronly.
#
####################################################################
LINK_APP_INTO_SERVER????= N
####################################################################
#Shared memory support for Nano-X client/server protocolspeedup
####################################################################
HAVE_SHAREDMEM_SUPPORT??= N
####################################################################
#
#File I/O support
# Supporting either below drags in libc stdio,which may not bewanted
#
####################################################################
HAVE_FILEIO?????????????= Y
####################################################################
#BMP, GIF readingsupport
####################################################################
HAVE_BMP_SUPPORT????????= Y
HAVE_GIF_SUPPORT????????= Y
HAVE_PNM_SUPPORT????????= Y
HAVE_XPM_SUPPORT????????= Y
####################################################################
#JPEG support through libjpeg, see README.txt incontrib/jpeg
####################################################################
HAVE_JPEG_SUPPORT???????= N
INCJPEG?????????????????= .
LIBJPEG?????????????????= /usr/lib/libjpeg.a
####################################################################
#PNG support via libpng andlibz
####################################################################
HAVE_PNG_SUPPORT????????= N
INCPNG??????????????????= .
LIBPNG??????????????????= /usr/lib/libpng.a
LIBZ????????????????????= /usr/lib/libz.a
####################################################################
#TIFF support throughlibtiff
####################################################################
HAVE_TIFF_SUPPORT???????= N
INCTIFF?????????????????= .
LIBTIFF?????????????????= /usr/lib/libtiff.a
####################################################################
#native .fnt loadable fontsupport
####################################################################
HAVE_FNT_SUPPORT????????= Y
HAVE_FNTGZ_SUPPORT?????? = N?#Y
FNT_FONT_DIR????????????= "fonts/bdf"
####################################################################
#T1 adobe type1 font support thrut1lib
####################################################################
HAVE_T1LIB_SUPPORT??????= N
INCT1LIB????????????????= .
LIBT1LIB????????????????= /usr/local/lib/libt1.a
####################################################################
#TrueType font support thru FreeType1.x
####################################################################
HAVE_FREETYPE_SUPPORT???= Y??????????????????#N
INCFTLIB????????????????= /usr/local/include????????#/usr/include/freetype1
LIBFTLIB????????????????= /usr/local/lib/libttf.a??????#/usr/lib/libttf.so
FREETYPE_FONT_DIR???????= "fonts/truetype"
####################################################################
#Support for many kinds of font thru FreeType 2.x
# Must also setFREETYPE_FONT_DIR in the Freetype 1.xsection
####################################################################
HAVE_FREETYPE_2_SUPPORT?= N
INCFT2LIB???????????????= .
LIBFT2LIB???????????????= /usr/lib/libfreetype.a
####################################################################
#PCF font support
# Selecting HAVE_PCFGZ_SUPPORT will allow you todirectly read
# .pcf.gz files, but it will add libz to the size oftheserver
####################################################################
HAVE_PCF_SUPPORT????????= N
HAVE_PCFGZ_SUPPORT?????? =N
PCF_FONT_DIR????????????= "fonts/pcf"
####################################################################
#Chinese Han Zi Ku loadable fontsupport
####################################################################
HAVE_HZK_SUPPORT????????= N
HZK_FONT_DIR????????????= "fonts/chinese"
####################################################################
#Chinese BIG5 compiled in font support(big5font.c)
####################################################################
HAVE_BIG5_SUPPORT???????= Y? #
####################################################################
#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 MGLfont
####################################################################
HAVE_EUCJP_SUPPORT??????= N
EUCJP_FONT_DIR??????????= "fonts/japanese"
####################################################################
#Generate screen driver interface only with no fonts orclipping
####################################################################
NOFONTSORCLIPPING???????= N
####################################################################
#
#Window move algorithms for Microwindows
# Change for tradeoffbetween cpu speed and looks
# ERASEMOVE repaints only backgroundswhile window dragging, quicker.
# Otherwise an XOR redraw is usedfor window moves only after button up,
# quickest (should set forELKS)
# UPDATEREGIONS paints in update clipping region only forbetter look andfeel
#
####################################################################
ERASEMOVE???????????????= Y
UPDATEREGIONS???????????= Y
####################################################################
#
#Link with Gray Palette (valid only for 4bppmodes)
#
####################################################################
GRAYPALETTE?????????????= N
####################################################################
#
#If the platform is running UNIX, Linux orRTEMS...
#
####################################################################
ifneq($(ARCH), ELKS)
# X Window screen, mouse andkbd drivers
X11?????????????????????= N
ifeq ($(X11), Y)
#startup screen width, height, (depth for palette modeonly)
SCREEN_WIDTH????????????= 640
SCREEN_HEIGHT???????????= 480
SCREEN_DEPTH????????????= 4
# You may want to turn thison for XFree86 4.x or if your backing store
# isn't functioningproperly
USE_EXPOSURE?? = Y
else
# framebuffer screen driver(linear and/or vga 4 planes)
# set VTSWITCH to include virtualterminal switch code
# set FBREVERSE to reverse bit orders in1,2,4 bpp
# set FBVGA=N for all systems without VGA hardware (forMIPS must=N)
FRAMEBUFFER?????????????= Y
FBVGA???????????????????= N?? #Y
VTSWITCH????????????????= N? #Y
#or else output "#error VTSWITCH depends onMW_FEATURE_TIMERS"
FBREVERSE???????????????= N
# set HAVETEXTMODE=Y forsystems that can switch between text & graphics.
# On agraphics-only embedded system, such as Osprey and Embedded
#Planet boards, set HAVETEXTMODE=N
HAVETEXTMODE????????????= Y
# svgalib screendriver
VGALIB??????????????????= N
# direct VGA hardware accessscreen driver
HWVGA???????????????????= N
####################################################################
#Mouse drivers
# GPMMOUSE?gpm mouse
# SERMOUSE?serialMicrosoft, PC, Logitech, PS/2 mice (/dev/psaux)
# SUNMOUSE?SunWorkstation mouse (/dev/sunmouse)
# NOMOUSE?no mousedriver
#
# 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???????? ADS7846chip, PSI OMAP Innovator (/dev/innnovator_ts)
# EPMOUSE?EmbeddedPlanet (/dev/tpanel)
# VHMOUSE?Vtech Helio (/dev/tpanel)
#MTMOUSE?MicroTouch serial (/dev/ttyS1)
# PSIONMOUSE?Psion5 (/dev/touch_psion)
# YOPYMOUSE?Yopy (/dev/yopy-ts)
#HARRIERMOUSE?NEC Harrier(/dev/tpanel)
####################################################################
GPMMOUSE????????????????= Y
SERMOUSE????????????????= N
SUNMOUSE????????????????= N
NOMOUSE?????????????????= N
IPAQMOUSE???????????????= N
ZAURUSMOUSE?????????????= N
TUXMOUSE????????????????= N
ADSMOUSE????????????????= N
ADS7846MOUSE????????????= N
EPMOUSE?????????????????= N
VHMOUSE?????????????????= N
MTMOUSE?????????????????= N
PSIONMOUSE??????????????= N
YOPYMOUSE???????????????= N
HARRIERMOUSE????????????= N
LIRCMOUSE???????????????= N
# keyboard or null kbddriver
TTYKBD??????????????????= Y? #N
SCANKBD?????????????????= N? #Y
PIPEKBD?????????????????= N
IPAQKBD?????????????????= N
LIRCKBD?????????????????= N
NOKBD???????????????????= N?
endif
# Secondary keyboarddrivers.
# You may have a normal keyboard driver in addition tothese
# drivers, e.g. for both normal keyboard and IRinput.
LIRCKBD2????????????????= N
####################################################################
#Screen driver specific configuration
# SA1100_LCD_LTLEND 4bppdriver with arm SA1100 LCD controller
# INVERT4BPP 4bpp invertedpixel driver for VTechHelio
####################################################################
SA1100_LCD_LTLEND???????= N
INVERT4BPP??????????????= N
endif
make 后即可
?
nano-X的安裝
修改Makefile,rules
INSTALL_PREFIX?= /usr/local/arm/2.95.3
保存,makeinstall
[root@localhost src]# make install 2>&1 | tee~/nano-fltk/nanox-intall.log
Copying hdrs to/usr/local/arm/2.95.3/include/microwin
Copying libs to/usr/local/arm/2.95.3/lib
Copying binaries to/usr/local/arm/2.95.3/bin
Installation completed successfully.
/usr/local/arm/2.95.3/lib
-rw-r--r--???1 root???? bin?????????1060? 1月 2722:25 libmwdrivers.a
-rw-r--r--??? 1 root????bin????????? 1058?1月 2722:25 libmwengine.a
-rw-r--r--??? 1 root????bin????????? 1052?1月 2722:25 libmwfonts.a
-rw-r--r--??? 1 root????bin??????? 277032? 1月27 22:25libmwimages.a
-rw-r--r--??? 1 root????bin??????? 888234? 1月27 22:25libmwin.a
-rw-r--r--??? 1 root????bin????????? 1008?1月 2722:25 libmwinlib.a
-rw-r--r--??? 1 root????bin???????? 76738? 1月27 22:25libnano-X.a
-rw-r--r--??? 1 root????bin????????? 7862?1月 2722:25 libvncauth.a
/usr/local/arm/2.95.3/bin
-rwxr-xr-x???1 root???? bin???????857336? 1月 2722:25 nano-X
/usr/local/arm/2.95.3/lib
drwxr-xr-x???2 root???? root????????4096? 1月 2722:25 microwin
?
?
?
2 編譯安裝nxlib
首先是閱讀nxlib-0.45/INSTALL文件:
/********************************************************************/
NXLIB build and installationinstructions
Version 0.44, May 30, 2003
1. Modify Makefile to setMicrowindows and X11 include and libdirectories
?MWIN=/usr2/microwin/src
?X11=/usr/X11R6
?Microwindows v0.90 orlater must be used.
2. Modify Makefile to setX11 PCF font search directories(2)
?X11_FONT_DIR1=/usr/lib/X11/fonts/100dpi
?X11_FONT_DIR2=/usr/lib/X11/fonts/misc
3. Modify Makefile to setrgb.txt file location
?X11_RGBTXT=/usr/lib/X11/rgb.txt
4. Modify Makefile to enableX11 shared library and version if desired
?SHAREDLIB=Y
?LIBNAME= X11
?SOLIBREV = 6.2
?CFLAGS += -DXCONST=_Xconst
?Because of X11 hdrversion inconstencies, you may need to set
??CFLAGS +=-DXCONST=_Xconst? or? CFLAGS += -DXCONST=
?tocompile _Xconst in or out of a couple of function declarations.
5. Type "make".
?Thisbuilds the library using your already-installed X11 headers.
?IfDEBUG = -g, a larger library will be built with debuginformation.
?If INCLUDE_XRM=Y, unmodified Xrm databaseroutines will be included.
6. DO NOT "makeinstall" UNTIL YOU BACK UP THE FOLLOWING LIBRARIES.
??NOTE "make install" WILL BY DEFAULT OVERWRITE THE FOLLOWINGFILES:
?/usr/X11R6/lib/libX11.so.*
?(/usr/X11R6/lib/libX11.so/usr/X11R6/lib/libX11.so.6 /usr/X11R6/lib/libX11.so.6.2)
*********************************************************************/
然后修改Makefile文件:
MWIN=/usr/local/microwindows-0.91/src
CC= arm-linux-gcc
保存,然后make.出現如下錯誤:
arm-linux-gcc -Wall -g-I/usr/local/microwindows-0.91/src/include-DX11_FONT_DIR1=\"/usr/lib/X11/fonts/100dpi\"-DX11_FONT_DIR2=\"/usr/lib/X11/fonts/misc\"-DX11_RGBTXT=\"/usr/lib/X11/rgb.txt\" -I. -fPIC -o Quarks.o-c Quarks.c
In file included from Quarks.c:52:
Xresource.h:55:X11/Xlib.h: ?????????
make: *** [Quarks.o] Error 1
這時在編譯Xrm(Xresource manager)時,出現錯誤,應該是頭文件搜索路徑沒有設置好,所以造成找不到Xlib.h文件
[
? 注意此時的文件關系,nxlib和X11中都有Xresource.hXlib.h
? 從Quarks.c#include "Xresource.h" 來看是nxlib的Xresource.h
?進入nxlib的Xresource.h,#include <X11/Xlib.h>來看是X11的Xlib.h
]
解決辦法:
在nxlib目錄的Makefile中增加X11的頭文件目錄
X11_INCLUDE=$(X11)/include
CFLAGS += -Wall $(DEBUG)-I$(MWIN_INCLUDE) -I$(X11_INCLUDE)
之后,編譯順利通過!
我們得到了想要的
libX11.so
libX11.so.6
libX11.so.6.2
libnx11.a
[root@localhostnxlib-0.45]# ls -l lib*
-rw-r--r--??? 1 root????root????? 4193830? 1月27 21:12libnx11.a
lrwxrwxrwx??? 1 root????root?????????? 13?1月 2721:12 libX11.so -> libX11.so.6.2
lrwxrwxrwx??? 1root???? root??????????13? 1月 2721:12 libX11.so.6 -> libX11.so.6.2
-rwxr-xr-x???1 root???? root??????557154? 1月 2721:12 libX11.so.6.2
nxlib的安裝,前面提到的INSTALL的第六點已經強調,若不更改安裝路徑會覆蓋掉原系統的相關lib文件.
應謹慎行事!!!!
我們想把所有的arm環境的編譯工具和庫文件全部放入/usr/local/arm/2.95.3中
修改Makefile
INSTALL_DIR = /usr/local/arm/2.95.3/lib
保存,然后makeinstall
[root@localhost nxlib-0.45]# make install 2>&1 |tee ~/nano-fltk/nxlib-intall.log
rm -f/usr/local/arm/2.95.3/lib/libX11.so; \
mv libX11.so/usr/local/arm/2.95.3/lib
+ rm -f/usr/local/arm/2.95.3/lib/libX11.so.6
+ mv libX11.so.6/usr/local/arm/2.95.3/lib
rm -f/usr/local/arm/2.95.3/lib/libX11.so.6.2; \
mv libX11.so.6.2/usr/local/arm/2.95.3/lib
/usr/local/arm/2.95.3/lib
lrwxrwxrwx???1 root???? root??????????13? 1月 2722:49 libX11.so -> libX11.so.6.2
lrwxrwxrwx??? 1root???? root??????????13? 1月 2722:49 libX11.so.6 -> libX11.so.6.2
-rwxr-xr-x???1 root???? root??????557154? 1月 2722:49 libX11.so.6.2
?
?
3 編譯fltk
[root@localhost fltk-1.1.7]#./configure --host=arm-linux --prefix=/usr/local/arm/2.95.3/ --with-x\
--x-includes=/usr/X11R6/include/--x-libraries=/usr/local/arm/2.95.3/lib/ \
?2>&1 | tee~/nano-fltk/fltk-config.log
[root@localhost fltk-1.1.7]#make 2>&1 | tee ~/nano-fltk/fltk-make.log
Linkingfluid...
/usr/local/arm/2.95.3/arm-linux/bin/ld: cannot find-lXext
collect2: ld returned 1 exit status
make[1]: *** [fluid]Error 1+
[root@localhostfltk-1.1.7]# make install 2>&1 | tee~/nano-fltk/fltk-install.log
/usr/local/arm/2.95.3/lib
[root@localhostlib]# ls -l libfltk*
-rw-r--r--??? 1 root????root?????? 873420? 1月28 19:20libfltk.a
-rw-r--r--??? 1 root????root??????? 21852? 1月28 19:20libfltk_forms.a
-rw-r--r--??? 1 root????root??????? 55526? 1月28 19:20libfltk_images.a
-rw-r--r--??? 1 root????root?????? 184162? 1月28 19:20libfltk_jpeg.a
-rw-r--r--??? 1 root????root?????? 183636? 1月28 19:20libfltk_png.a
-rw-r--r--??? 1 root????root??????? 77762? 1月28 19:20libfltk_z.a
/usr/local/arm/2.95.3/include
lrwxrwxrwx???1 root???? dip????????????2? 1月 2819:20 Fl -> FL
drwxr-xr-x??? 3 root????dip????????? 8192?1月 2819:20 FL
/usr/local/arm/2.95.3/bin
-rwxr-xr-x???1 root???? root????????6780? 1月 2819:20 fltk-config
?
4、后續發現的問題
1)
/usr/local/arm/2.95.3/arm-linux/bin/ld:cannot find -lXext
collect2: ld returned 1 exitstatus
查看/usr/local/arm/2.95.3/bin/fltk-config腳本
去掉掉59行的-lXext
?
2)
/usr/local/arm/2.95.3/lib/libfltk.a(Fl_x.o):In function `Fl::paste(Fl_Widget &, int)':
Fl_x.o(.text+0xc90):undefined reference to`XConvertSelection'
/usr/local/arm/2.95.3/lib/libfltk.a(Fl_x.o):In function `Fl::copy(char const *, int, int)':
Fl_x.o(.text+0xde0):undefined reference to`XSetSelectionOwner'
/usr/local/arm/2.95.3/lib/libfltk.a(Fl_x.o):In function `fl_handle(_XEvent const &)':
Fl_x.o(.text+0x1880):undefined reference to`XConvertSelection'
/usr/local/arm/2.95.3/lib/libfltk.a(fl_dnd.o):In function `Fl::dnd(void)':
fl_dnd.o(.text+0x1c0): undefinedreference to `XSetSelectionOwner'
collect2: ld returned 1 exitstatus
在fltk論壇上有人出現同樣的問題,并找到解決辦法:
Nxlib-0.45Makefile is missing Selection.o
進入Selection.c里面有XSetSelectionOwner?XGetSelectionOwner? XConvertSelection 函數正是我們需要的
修改Makefile在OBJS中加入 Selection.o
重新編譯nxlib
再maketest代碼,成功通過!
?
5、在arm上運行
在arm上執行之前要先把之前做好的library跟server準備好︰
/bin/nano-X
/lib/libnano-X.so
/lib/libX11.so.6.2
ln-s libX11.so.6.2 libX11.so
ln -s libX11.so.6.2 libX11.so.6
# nano-X &
將nano-X放入后臺執行
然后就可以運行編譯好的程序了
我到這里時出現一些問題,fltk程序還不能運行,總是會出現一些錯誤,暫時不能解決!
總結
以上是生活随笔為你收集整理的在redhat9中交叉编译nano-X nxlib和fltk的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XP硬盘安装Ubuntu 10.10双系
- 下一篇: 交叉编译 FLTK1.3.0