交叉编译场景(arm(5)

修改这些配置文件是一种比较繁琐的事情,特别对于新手来说,往往要经历修改配置文件-编译-失败-再修改配置文件这个循环好几次。即使是对于有经验的人来说,一次搞定也并非那么容易。这个过程讲起来比较冗长,这里就不再多说,具体的配置文件可以参考构建处方。

按照BUILD.txt里的建议,我们决定建立一个临时目录,在这个临时目录里编译,避免破坏原始文件。实践证明这个建议很有用,因为很少第一次编译成功,重新编译时不用再去解压软件包,可以节省不少时间。

[root@linux cross]# cd xc/config/util/

[root@linux util]# make lndir

[root@linux util]# cp lndir /usr/local/bin/

[root@linux util]# cd -

[root@linux cross]# mkdir armtinyx

[root@linux cross]# cd armtinyx

[root@linux armtinyx]# lndir ../xc/

现在我们把配置文件和patch文件拷贝进来:

[root@linux armtinyx]# cp ../armtinyx.patch/* . -rf

编译:

[root@linux armtinyx] make World DESTDIR=$ROOTFS_DIR

出现下列错误:

/usr/local/arm-linux/lib/gcc/arm-linux/3.4.2/../../../../arm-linux/sys-include/sys/io.h:38: error: conflicting types for 'inb'

../../../../../programs/Xserver/hw/xfree86/common/compiler.h:1452: error: previous definition of 'inb' was here

/usr/local/arm-linux/lib/gcc/arm-linux/3.4.2/../../../../arm-linux/sys-include/sys/io.h:39: error: conflicting types for 'inw'

编辑armtinyx/programs/Xserver/hw/xfree86/common/compiler.h,删除outb之类的空函数。

重新编译:

[root@linux armtinyx] make

出现下列错误:

arm-linux-gcc: os/tiny/lbxio.o: No such file or directory

[root@linux armtinyx] cd programs/Xserver/os/tiny

[root@linux armtinyx] make lbxio.o

[root@linux armtinyx] cd -

[root@linux armtinyx] make

[root@linux armtinyx] make install DESTDIR=$ROOTFS_DIR

编译成功!

其它说明:

若是2.6的内核,你可能要修改NR_KEYS的值为128,否则programs/Xserver/hw/tinyx/linux/keyboard.c里有内存越界问题,造成无法运行。

若运行时,发现触摸屏不能使用,修改programs/Xserver/hw/tinyx/linux/tslib.c的数组TsNames,加入你使用的触摸屏设备文件。若还是不行,检查一下tslib需要的环境变量是否设置正确。

3. 构建处方

armtinyx.mk

ARMTINYX_PATCH_DIR=armtinyx.patch

XC_DIR=xc

all: clean config build

config:

cd xc/config/util && make lndir && cp -f lndir /usr/bin

rm -rf $(ARMTINYX_DIR)

mkdir $(ARMTINYX_DIR)

cd $(ARMTINYX_DIR) && lndir ../xc

cp -rvf $(ARMTINYX_PATCH_DIR)/* $(ARMTINYX_DIR)

echo "config done"

build:

@cd $(ARMTINYX_DIR) && \

make World DESTDIR=$$ROOTFS_DIR && make install && \

cd programs/Xserver/os/tiny && make lbxio.o && cd -  && \

make && \

make install && \

echo "build done"

clean:

rm -rf $(ARMTINYX_DIR)

echo "clean done"

l         armtinyx.patch/config/cf/cross.def

#undef Arm32Architecture

#undef i386Architecture

#undef Arm32Architecture

#undef Arm32Architecture

#define Arm32Architecture

#undef OptimizedCDebugFlags

#define OptimizedCDebugFlags    -Os

#define ServerCDebugFlags   -Os

#undef StandardDefines

#define StandardDefines     -Dlinux -D__arm__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE \

-DX_LOCALE -DUSE_DYNAMIC_LC -DUSE_UTF8_LOADER -DUSE_DYNAMIC_LOADER

#define PreIncDir

#undef PostIncDir

#undef CcCmd

#define CcCmd arm-linux-gcc -I$(ROOTFS_DIR)/usr/include/ncurses -I$(ROOTFS_DIR)/usr/include

#undef HasCplusplus

#define HasCplusplus NO

#undef CplusplusCmd

#define CplusplusCmd NO

#define DoRanlibCmd YES

#define RanlibCmd arm-linux-ranlib

#undef ExtraLoadFlags

#define ExtraLoadFlags

#define FbNoPixelAddrCode

#undef TermcapLibrary

#define TermcapLibrary -L$(ROOTFS_DIR)/usr/lib -lncurses

#define NCursesLibName -L$(ROOTFS_DIR)/usr/lib -lncurses

#undef LdPostLib

#undef LdCmd

#define LdCmd arm-linux-ld

#undef ExtensionOSDefines

#define ExtensionOSDefines

#define ServerXdmcpDefines

#define GzipLibrary -L$(ROOTFS_DIR)/usr/local/lib -lz

#i nclude <cross.rules>

l         armtinyx.patch/config/cf/host.def

#define KDriveXServer       YES

#define TinyXServer     YES    

#define XfbdevServer        YES

#define CrossCompiling      YES

#define ProjectRoot             /usr/X11R6

#define NothingOutsideProjectRoot   YES

#define HasFreetype2        NO 

#define HasFontconfig       NO

#define HasLibpng       NO     

#define HasZlib         NO     

#define HasExpat        NO     

#define BuildXprintClients  NO

#define TouchScreen     YES

#define HasTsLib        YES   

#define BuildDocs       NO    

#define BuildXF86DRI        NO

#define BuildGlxExt     NO    

#define BuildOSMesaLib      NO

#define BuildLowMem     NO    

#define BuildIPv6       NO    

#define HasMTRRSupport          NO

#define UseX86Emu               NO

#define XF86INT10_BUILD         X86INT10_STUB

#define BuildAppgroup           NO

#define BuildDBE                NO

#define BuildLBX                NO

#define HasMTRRSupport          NO

#define UseX86Emu               NO

#define XF86INT10_BUILD         X86INT10_STUB

#define BuildAppgroup           NO

#define BuildDBE                NO

#define BuildLBX                NO

#define BuildFonts              YES

#undef  BuildXF86RushExt

#define BuildXF86RushExt        NO

#undef  BuildRender

#define BuildRender             YES

#define UseRgbTxt               YES

#define BuildFontServer         NO

#define BuildClients            NO

#define BuildFonts              YES

#undef  BuildXF86RushExt

#define BuildXF86RushExt        NO

#undef  BuildRender

#define BuildRender             YES

#define UseRgbTxt               YES

#define BuildFontServer         NO

#define OmitSnfSupport          YES

#define  XdecMultiDepthServer  NO

#define  XsunServer            NO

#define  Xsun24Server          NO

#define  XsunMonoServer        NO

#define  XsunLynxServer        NO

#define  XSavageServer         NO

#define  XIgsServer            NO

#define  XTridentServer        NO

#define  XchipsServer          NO

#define  Xmach64Server         NO

#define  Xi810Server           NO

#define  XSis530Server         NO

#define  XTrioServer           NO

#define  XipaqServer           NO

#define  XTS300Server          NO

#define  XItsyServer           NO

#define  XvesaServer           NO

#define  XDarwinServer         NO

#define XF86CardDrivers         fbdev

#define XInputDrivers       mouse keyboard

[编译sqlite]

1. 基本信息:

软件名称

sqlite

功能简述

sqlite是一个针对嵌入式系统设计的数据库管理系统(DBMS),实现了SQL92的基本功能,ARM版的可执行文件约300K.

下载地址

软件版本

sqlite-3.3.4.tar.gz

依赖关系

默认

readline

前置条件

源文件位置:$(WORK_DIR)/ sqlite-3.3.4

2.  过程分析

下载的稳定版本,configure已经存在,直接进行配置:

[root@linux sqlite-3.3.4]# ./configure --host=$ARCH-linux --prefix=$ROOTFS_DIR/usr

出现了如下错误:

configure: error: unable to find a compiler for building build tools

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwjjg.html