📄 如何为嵌入式开发建立交叉编译环境 wimax宽带无线网络技术论坛 - www_wimax_org_cn.htm
字号:
<P>配置完后就可以编译和安装 glibc</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">$make
$make install_root=$TARGET_PREFIX prefix="" install
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>然后你还要修改 libc.so 文件</P>
<P>将<BR>GROUP ( /lib/libc.so.6
/lib/libc_nonshared.a)</P>
<P>改为<BR>GROUP ( libc.so.6 libc_nonshared.a)</P>
<P>这样连接程序 ld 就会在 libc.so
所在的目录查找它需要的库,因为你的机子的/lib目录可能已经装了一个相同名字的库,一个为编译可以在你的宿主机上运行的程序的库,而不是用于交叉编译的。</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=N102B8><SPAN class=atitle><FONT face=Arial
size=4>建立全套编译器(full gcc)</FONT></SPAN></A></P>
<P>在建立boot-gcc
的时候,我们只支持了C。到这里,我们就要建立全套编译器,来支持C和C++。</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 $PRJROOT/build-tools/build-gcc
$../gcc-2.95.3/configure --target=$TARGET --prefix=$PREFIX --enable-languages=c,c++
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>--enable-languages=c,c++ 告诉 full gcc 支持 c 和 c++
语言。</P>
<P>然后编译和安装你的 full gcc</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">$make all
$make install
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>我们再来看看 $PREFIX/bin 里面多了哪些东西</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 $PREFIX/bin
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>你会发现多了 arm-linux-g++ 、arm-linux-protoize 和
arm-linux-c++ 几个文件。</P>
<P>G++-gnu的 c++ 编译器。</P>
<P>Protoize-与Unprotoize相反,将K&R C的源码转化为ANSI
C的形式,函数原型中加入参数类型。</P>
<P>C++-gnu 的 c++ 编译器。</P>
<P>到这里你的交叉编译工具就算做完了,简单验证一下你的交叉编译工具。</P>
<P>用它来编译一个很简单的程序 helloworld.c</P><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%"
bgColor=#eeeeee border=1>
<TBODY>
<TR>
<TD><PRE><CODE class=section>
<FONT face="Lucida Console">#include <STDIO.H>
int main(void)
{
printf("hello world\n");
return 0;
}
$arm-linux-gcc helloworld.c -o helloworld
$file helloworld
helloworld: ELF 32-bit LSB executable, ARM, version 1,
dynamically linked (uses shared libs), not stripped
</FONT></CODE></PRE></TD></TR></TBODY></TABLE><BR>
<P>上面的输出说明你编译了一个能在 arm 体系结构下运行的
helloworld,证明你的编译工具做成功了。</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=resources><SPAN class=atitle><FONT face=Arial
size=4>参考资料 </FONT></SPAN></A></P>
<UL>
<LI>Wookey ,Chris Rutter, Jeff Sutherland, Paul Webb
,《The GNU Toolchain for ARM Target HOWTO》<BR><BR>
<LI>Karim Yaghmour,《Building Embedded Linux
Systems》,USA:O'Reilly,2003</LI></UL></TD></TR></TBODY></TABLE></SPAN><BR><!----></TD></TR>
<TR vAlign=bottom bgColor=#ffffff>
<TD colSpan=6><!----></TD></TR>
<TR vAlign=bottom bgColor=#ffffff>
<TD colSpan=5><!----><FONT color=red>[楼 主]</FONT>
<!----><B>Posted:</B>2006-03-15 10:04|</TD>
<TD align=right><A href="javascript:scroll(0,0)"><IMG alt=顶端
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/top.gif"></A>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE width="99%" align=center>
<TBODY>
<TR>
<TD height=1></TD></TR></TBODY></TABLE><!----><BR>
<TABLE cellSpacing=0 cellPadding=0 width="99%" align=center>
<FORM name=jump method=post>
<TBODY>
<TR>
<TD align=left></TD>
<TD vAlign=center align=right><SELECT
onchange="Fjumpr(this.options[this.selectedIndex].value,'../../..')">
<OPTION value="" selected>快速跳至</OPTION> <OPTION value=6>>>
无线网络技术主版块</OPTION> <OPTION value=13> |- 无线网络技术基础</OPTION>
<OPTION value=12> |- WiMAX技术动态</OPTION> <OPTION
value=14> |- 方案和应用</OPTION> <OPTION value=7> |-
无线网络安全</OPTION> <OPTION value=19> |- 无线上网相关问题</OPTION>
<OPTION value=15> |- 3G技术动态</OPTION> <OPTION
value=16> |- LINUX和无线网络</OPTION> <OPTION value=22>>>
招聘和求职</OPTION> <OPTION value=23> |- 无线人才网罗</OPTION> <OPTION
value=17>>> 灌水和版务</OPTION> <OPTION value=20> |-
版务和建议</OPTION> <OPTION value=21> |- 无限灌水</OPTION></SELECT>
</TD></TR></FORM>
<TR>
<TD align=left><BR><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/home.gif"
align=absBottom> <B><A
href="http://www.wimax.org.cn/index.php">WiMAX宽带无线网络技术论坛</A> ->
<A
href="http://www.wimax.org.cn/thread.php?fid=16">LINUX和无线网络</A></B></TD>
<TD align=right><BR><A
href="http://www.wimax.org.cn/post.php?fid=16"><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/post.gif"></A>
<A
href="http://www.wimax.org.cn/post.php?action=vote&fid=16"><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/vote.gif"></A>
<A
href="http://www.wimax.org.cn/post.php?action=reply&fid=16&tid=354"><IMG
src="如何为嵌入式开发建立交叉编译环境 WiMAX宽带无线网络技术论坛 - www_wimax_org_cn.files/reply.gif"></A>
</TD></TR></TBODY></TABLE><BR>
<FORM name=FORM action=../../../post.php method=post>
<TABLE class=i_table cellSpacing=1 cellPadding=0 width="99%"
align=center><TBODY>
<TR>
<TD colSpan=2>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD class=head><B>快速发帖</B></TD>
<TD class=head align=right><A
href="http://www.wimax.org.cn/htm_data/16/0603/354.html#top"><B>顶端</B></A></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD
style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"
vAlign=top width="20%"
bgColor=#ffffff><!-- 20宽跟下面搭配 --><B>内容</B>:<BR><FONT
face=verdana>HTML 代码不可用<BR><BR><INPUT type=checkbox CHECKED value=1
name=atc_usesign>使用签名<BR><INPUT type=checkbox CHECKED value=1
name=atc_convert>Wind Code自动转换 <INPUT type=hidden value=1
name=atc_autourl><BR><BR>[<A
href="javascript:checklength(document.FORM,'500000');">查看帖子长度</A>]
</FONT></TD>
<TD
style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; PADDING-TOP: 7px"
width="80%" bgColor=#ffffff>标题: <INPUT maxLength=45 size=45
value=Re:如何为嵌入式开发建立交叉编译环境 name=atc_title> <!---->┆点击下拉:<SPAN
title=显示/隐藏表情图标列表 style="CURSOR: hand"
onclick="smilelist.style.display=smilelist.style.display=='none'?'block':'none'">[<B>表情图标</B>]</FONT></SPAN>
<SCRIPT language=JavaScript src=""></SCRIPT>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY id=smilelist style="DISPLAY: none">
<TR>
<TD>
<FIELDSET style="WIDTH: 99%"><LEGEND>选择表情:</LEGEND>
<DIV style="OVERFLOW: auto; HEIGHT: 0px">
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><!-- --><A href="javascript:addsmile('[s:1]')"><IMG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -