分享
 
 
 

交叉编译场景分析(arm-linux)(一)--基本知识

王朝system·作者佚名  2007-01-25
窄屏简体版  字體: |||超大  

交叉编译场景分析(arm-linux)(一)--基本知识

转载时请注明出处:http://blog.csdn.net/absurd

1. 基本知识

在linux下,绝大部分的软件包都是用autoconf配置的。除此之外,比较有名的就是X11的imake配置方式,imake实际上有点过时了,用起来很不方便,所以xfree86已经计划向autoconf移植了。还有极少的直接使用Makefile编译,通过环境变量或者不同的Makefile配置,当然这只适用于简单的软件包。

Autoconf是一个非常有用的配置工具,原理有点复杂,全面了解它要花不少时间,但使用很方便。这里简单介绍一下autoconf交叉编译的基本知识。

下载软件包无非两种方式,一种是直接从cvs里取最新版本,另一种是取发布的稳定版本。除非你想测试最新版本,否则后者是比较安全的方式。但有的软件包不提供发布的版本,这时就只能退而求其次了-使用cvs版本了。

编译cvs版本有一点不同,cvs版本通常不带configure脚本的,自己要重新产生configure脚本。当然这并不困难,多数开发人员都会在自己的软件包里,放上一个autogen.sh或者bootstartup之类的脚本。利用这个脚本可以自动产生configure脚本。下面是一个autogen.sh脚本示例,若软件包里没有提供这样的文件,可以仿照写一个:

#!/bin/sh

# $Id: autogen.sh,v 1.3 2005/02/26 01:47:22 kergoth Exp $

autoreconf -f -i -I `pwd`/m4

exit $?

echo -n "Libtoolize..."

libtoolize --force --copy

echo "Done."

echo -n "Aclocal..."

aclocal

echo "Done."

echo -n "Autoheader..."

autoheader

echo "Done."

echo -n "Automake..."

automake --add-missing --copy

echo "Done."

echo -n "Autoconf..."

autoconf

echo "Done."

#./configure $*

echo "Now you can do ./configure, make, make install."

正式发布的软件包里,已经有做好的configure脚本了。接下来我们要做的就是利用configure进行配置。对于交叉编译来说,最重要的配置选项有以下几个:

--host:指定目标机的平台类型。一般格式为CPU类型-操作系统名称。比如,目标机的CPU为arm,操作系统为linux,可以这样写--host=arm-linux。

--prefix:这是安装路径的前缀,即编译结果放置的位置。默认值是/usr或者/usr/local,交叉编译时不能使用默认值,否则它会覆盖你本机的文件,所以要指定一个路径。比如,可以指定为--prefix=/work/cross/rootfs/usr。

配置完成后,运行make编译,运行make install安装。

(pkg-config也是一个非常重要的工具,关于pkg-config的使用,可以参考笔者另外一篇文章,这里不再多说。)

2. 文档惯例及隐含前提:

交叉编译器名称:arm-linux-gcc

交叉编译器版本:3.4.3

目标操作系统版本:2.6.9

默认依赖关系:依赖glibc

隐含环境变量:

WORK_DIR:工作目录,设置为/work/cross

ROOTFS_DIR:编译结果根目录,设置为$WORK_DIR/rootfs

ARCH:目标平台的体系架构,设置为arm

建立一个脚本用于设置变量和建立必要的目录,在编译前,先运行. corss.env。 其内容如下:

cross.env

export WORK_DIR=/work/cross

export ROOTFS_DIR=$WORK_DIR/rootfs

export ARCH=arm

export PKG_CONFIG_PATH=$ROOTFS_DIR/usr/local/lib/pkgconfig:$ROOTFS_DIR/usr/lib/pkgconfig:$ROOTFS_DIR/usr/X11R6/lib/pkgconfig

if [ ! -e "$ROOTFS_DIR/usr/local/include" ]; then mkdir -p $ROOTFS_DIR/usr/local/include;fi;

if [ ! -e "$ROOTFS_DIR/usr/local/lib" ]; then mkdir -p $ROOTFS_DIR/usr/local/lib; fi;

if [ ! -e "$ROOTFS_DIR/usr/local/etc" ]; then mkdir -p $ROOTFS_DIR/usr/local/etc; fi;

if [ ! -e "$ROOTFS_DIR/usr/local/bin" ]; then mkdir -p $ROOTFS_DIR/usr/local/bin; fi;

if [ ! -e "$ROOTFS_DIR/usr/local/share" ]; then mkdir -p $ROOTFS_DIR/usr/local/share; fi;

if [ ! -e "$ROOTFS_DIR/usr/local/man" ]; then mkdir -p $ROOTFS_DIR/usr/local/man; fi;

if [ ! -e "$ROOTFS_DIR/usr/include" ]; then mkdir -p $ROOTFS_DIR/usr/include; fi;

if [ ! -e "$ROOTFS_DIR/usr/lib" ]; then mkdir -p $ROOTFS_DIR/usr/lib; fi;

if [ ! -e "$ROOTFS_DIR/usr/etc" ]; then mkdir -p $ROOTFS_DIR/usr/etc; fi;

if [ ! -e "$ROOTFS_DIR/usr/bin" ]; then mkdir -p $ROOTFS_DIR/usr/bin; fi;

if [ ! -e "$ROOTFS_DIR/usr/share" ]; then mkdir -p $ROOTFS_DIR/usr/share; fi;

if [ ! -e "$ROOTFS_DIR/usr/man" ]; then mkdir -p $ROOTFS_DIR/usr/man; fi;

颜色字体含义

颜色字体 表示错误信息。

颜色字体 表示命令行脚本。

颜色字体 表示文件内容。

文档格局:

1. 基本信息:

软件名称

功能简述

下载地址

软件版本

依赖关系

前置条件

2. 过程分析

构建过程中遇到的问题分析。

3. 构建处方

通常是一个可用的Makefile,用它可以编译这个模块。或者一些patch文件。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有