📄 如何为嵌入式开发建立交叉编译环境 wimax宽带无线网络技术论坛 - www_wimax_org_cn.htm
字号:
<TABLE class=i_table style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
cellSpacing=1 cellPadding=0 width="99%" align=center>
<TBODY>
<TR>
<TD
style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px"
vAlign=top width="20%" bgColor=#ffffff height="100%"><FONT
face=Gulim color=#000066><B>emthqred</B></FONT><BR>
<TABLE cellSpacing=0 cellPadding=0 width="98%">
<TBODY>
<TR>
<TD
align=middle><BR><BR></TD></TR></TBODY></TABLE><BR><BR><!----><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/5.gif">
<BR>级别: <FONT color=#555555>论坛版主</FONT><BR>精华: <FONT
color=green><B>0</B></FONT><BR>发帖: <FONT
color=green><B>29</B></FONT><BR>论坛积分: <FONT color=#984b98><B>32
分</B></FONT><BR>论坛货币: <FONT color=#984b98><B>169 元</B></FONT><BR><!---->好评度: <FONT color=#0033ff><B>11
点</B></FONT><BR><!---->注册时间:2006-02-10<BR></TD>
<TD vAlign=top width="80%" bgColor=#ffffff height="100%">
<TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word"
height="100%" cellSpacing=0 cellPadding=6 width="99%"
align=center><TBODY>
<TR height="100%">
<TD vAlign=top bgColor=#ffffff colSpan=6><!----><A
href="http://www.wimax.org.cn/profile.php?action=show&uid=399"><IMG
alt=查看作者资料
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/profile.gif"
align=absMiddle></A> <A
href="http://www.wimax.org.cn/message.php?action=write&touid=399"><IMG
alt=发送短消息
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/message.gif"
align=absMiddle></A> <A
href="http://www.wimax.org.cn/sendemail.php?uid=399"><IMG
alt=发送邮件
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/email.gif"
align=absMiddle></A> <A
href="http://www.wimax.org.cn/sendemail.php?action=tofriend&tid=354"><IMG
alt=推荐此帖
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/emailto.gif"
align=absMiddle></A> <A
href="http://www.wimax.org.cn/post.php?action=quote&fid=16&tid=354&pid=&article=0"><IMG
alt=引用回复这个帖子
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/quote.gif"
align=absMiddle></A> <A
href="http://www.wimax.org.cn/post.php?action=modify&fid=16&tid=354&pid=&article=0"><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/edit.gif"
align=absMiddle></A> <!----><BR><BR><SPAN
class=tpc_title>如何为嵌入式开发建立交叉编译环境</SPAN><BR><!----><BR><SPAN
class=tpc_content>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD width="100%">
<H1>如何为嵌入式开发建立交叉编译环境(转自IBM)</H1><IMG class=display-img
height=6 alt="" src="" width=1></TD>
<TD class=no-print width=192></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD width=10><IMG height=1 alt="" src="" width=10></TD>
<TD width="100%">
<TABLE class=no-print cellSpacing=0 cellPadding=0
width=160 align=right border=0>
<TBODY>
<TR>
<TD width=10><IMG height=1 alt="" src=""
width=10></TD>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=150
border=0>
<TBODY>
<TR>
<TD
class=v14-header-1-small>文档选项</TD></TR></TBODY></TABLE>
<TABLE class=v14-gray-table-border cellSpacing=0
cellPadding=0 border=0>
<TBODY>
<TR>
<TD class=no-padding width=150>
<TABLE cellSpacing=0 cellPadding=0 width=143
border=0><IMG height=1 alt="" src="" width=8>
<FORM name=email
action=https://www-128.ibm.com/developerworks/secure/email-it.jsp><INPUT
type=hidden
value=在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。
name=body><INPUT type=hidden
value=如何为嵌入式开发建立交叉编译环境 name=subject><INPUT
type=hidden value=cn name=lang>
<SCRIPT language=java type=text/java script>
<!--
document.write('<tr valign="top"><td width="8"><img src="//www.ibm.com/i/c.gif" width="8" height="1" alt=""/></td><td width="16"><img src="//www.ibm.com/i/v14/icons/em.gif" height="16" width="16" vspace="3" alt="将此页作为电子邮件发送" /></td><td width="122"><p><a class="smallplainlink" href="java script:document.email.submit();"><b>将此页作为电子邮件发送</b></a></p></td></tr>');
//-->
</SCRIPT>
<TBODY>
<TR vAlign=top>
<TD width=8><IMG height=1 alt="" src=""
width=8></TD>
<TD width=16></TD>
<TD width=122>
<P><B><FONT color=#5c81a7
size=2></FONT></B> </P></TD></TR><NOSCRIPT>
<TR vAlign=top>
<TD width=8><IMG height=1 alt="" src=""
width=8></TD>
<TD width=16><IMG height=16 alt="" src=""
width=16></TD>
<TD class=small width=122>
<P><SPAN
class=ast></SPAN></P></TD></TR></NOSCRIPT></FORM></TBODY></TABLE></TD></TR></TBODY></TABLE><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><BR><!--END RESERVED FOR FUTURE USE INCLUDE FILES--><BR></TD></TR></TBODY></TABLE>
<P><A
href="http://www-128.ibm.com/developerworks/cn/linux/l-embcmpl/#author"><FONT
color=#996699>梁元恩 </FONT></A>, 软件工程师<BR></P>
<P>2005 年 9 月 </P>
<BLOCKQUOTE>在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。</BLOCKQUOTE><!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
<P>随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。</P>
<P>在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由
binutils、gcc 和 glibc 几个部分组成。有时出于减小 libc 库大小的考虑,你也可以用别的 c
库来代替 glibc,例如 uClibc、dietlibc 和
newlib。建立一个交叉编译工具链是一个相当复杂的过程,如果你不想自己经历复杂的编译过程,网上有一些编译好的可用的交叉编译工具链可以下载。</P>
<P>下面我们将以建立针对arm的交叉编译开发环境为例来解说整个过程,其他的体系结构与这个相类似,只要作一些对应的改动。我的开发环境是,宿主机
i386-redhat-7.2,目标机 arm。</P>
<P>这个过程如下</P>
<P>1. 下载源文件、补丁和建立编译的目录</P>
<P>2. 建立内核头文件</P>
<P>3. 建立二进制工具(binutils)</P>
<P>4. 建立初始编译器(bootstrap gcc)</P>
<P>5. 建立c库(glibc)</P>
<P>6. 建立全套编译器(full gcc)</P>
<P><A name=N1005A><SPAN class=atitle><FONT face=Arial
size=4>下载源文件、补丁和建立编译的目录</FONT></SPAN></A></P>
<P>1. 选定软件版本号</P>
<P>选择软件版本号时,先看看glibc源代码中的INSTALL文件。那里列举了该版本的glibc编译时所需的binutils
和gcc的版本号。例如在 glibc-2.2.3/INSTALL 文件中推荐 gcc 用
2.95以上,binutils 用 2.10.1 以上版本。</P>
<P>我选的各个软件的版本是:</P>
<P>linux-2.4.21+rmk2<BR>binutils-2.10.1<BR>gcc-2.95.3<BR>glibc-2.2.3<BR>glibc-linuxthreads-2.2.3</P>
<P>如果你选的glibc的版本号低于2.2,你还要下载一个叫glibc-crypt的文件,例如glibc-crypt-2.1.tar.gz。
Linux 内核你可以从www.kernel.org 或它的镜像下载。</P>
<P>Binutils、gcc和glibc你可以从FSF的FTP站点<A
href="ftp://ftp.gun.org/gnu/"
target=_blank>ftp://ftp.gun.org/gnu/</A>
或它的镜像去下载。在编译glibc时,要用到 Linux 内核中的 include
目录的内核头文件。如果你发现有变量没有定义而导致编译失败,你就改变你的内核版本号。例如我开始用linux-2.4.25+vrs2,编译glibc-2.2.3
时报 BUS_ISA 没定义,后来发现在 2.4.23 开始它的名字被改为
CTL_BUS_ISA。如果你没有完全的把握保证你改的内核改完全了,就不要动内核,而是把你的 Linux
内核的版本号降低或升高,来适应 glibc。</P>
<P>Gcc 的版本号,推荐用 gcc-2.95 以上的。太老的版本编译可能会出问题。Gcc-2.95.3
是一个比较稳定的版本,也是内核开发人员推荐用的一个 gcc 版本。</P>
<P>如果你发现无法编译过去,有可能是你选用的软件中有的加入了一些新的特性而其他所选软件不支持的原因,就相应降低该软件的版本号。例如我开始用
gcc-3.3.2,发现编译不过,报 as、ld 等版本太老,我就把 gcc 降为
2.95.3。太新的版本大多没经过大量的测试,建议不要选用。</P><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%"
border=0>
<TBODY>
<TR>
<TD><IMG height=1 alt="" src=""
width="100%"><BR><IMG height=6 alt="" src=""
width=8 border=0></TD></TR></TBODY></TABLE>
<TABLE class=no-print cellSpacing=0 cellPadding=0
align=right>
<TBODY>
<TR align=right>
<TD><IMG height=4 alt="" src="" width="100%"><BR>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=center><IMG height=16 alt="" src=""
width=16 border=0><BR></TD>
<TD vAlign=top align=right><A class=fbox
href="http://www-128.ibm.com/developerworks/cn/linux/l-embcmpl/#main"><B><FONT
color=#996699>回页首</FONT></B></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR>
<P><A name=N10080><SPAN class=atitle><FONT face=Arial
size=4>2. 建立工作目录</FONT></SPAN></A></P>
<P>首先,我们建立几个用来工作的目录:</P>
<P>在你的用户目录,我用的是用户liang,因此用户目录为
/home/liang,先建立一个项目目录embedded。</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">$pwd
/home/liang
$mkdir embedded
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>再在这个项目目录 embedded 下建立三个目录 build-tools、kernel 和
tools。</P>
<P>build-tools-用来存放你下载的 binutils、gcc 和 glibc
的源代码和用来编译这些源代码的目录。</P>
<P>kernel-用来存放你的内核源代码和内核补丁。</P>
<P>tools-用来存放编译好的交叉编译工具和库文件。</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">$cd embedded
$mkdir build-tools kernel tools
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>执行完后目录结构如下:</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">$ls embedded
build-tools kernel tools
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>3. 输出和环境变量</P>
<P>我们输出如下的环境变量方便我们编译。</P><BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -