<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I&#039;m frankyue &#187; GCC</title>
	<atom:link href="http://frankyue.me/tag/gcc/feed/" rel="self" type="application/rss+xml" />
	<link>http://frankyue.me</link>
	<description>VIIV 535</description>
	<lastBuildDate>Sat, 27 Mar 2010 07:11:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>zh</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Crosstool</title>
		<link>http://frankyue.me/2009/02/crosstool/</link>
		<comments>http://frankyue.me/2009/02/crosstool/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 13:37:07 +0000</pubDate>
		<dc:creator>frankyue</dc:creator>
				<category><![CDATA[嵌入式]]></category>
		<category><![CDATA[GCC]]></category>

		<guid isPermaLink="false">http://frankyue.cn/?p=173</guid>
		<description><![CDATA[一直没写要荒废了！去年TX给我介绍个Crosstool来编译gcc的，这个玩意是很好，但是当时怎么也弄不成功，搞的头都大了，今天才知道原来不匹配的东西你想弄还真是难！
为了能编译一个适合ARM的2.6内核，今天在一本书上看到介绍crosstool的用法！当然之前是有介绍自己一个一个介绍的慢慢的整合编译，但是费了九牛二虎之力还是不行各种错误不断，总会出现一个
/usr/include/bits/fcntl2.h:51: error: call to &#8216;__open_missing_mode&#8217; declared with attribute error: open with O_CREAT in second argument needs 3 arguments

的错误，查来查去没办法弄，好像是一个BUG，没找到解决办法！
只好用Crosstool来编译arm-linux-gcc(3.3.6版本)，所需的源码文件如下linux-2.6.10.tar.bz2,binutils-2.15.tar.bz2,gcc-3.3.6.tar.bz2,glibc-2.3.2.tar.bz2,glibc-linuxthreads-2.3.2.tar.bz2,linux-libc-headers-2.6.12.0.tar.bz2。
进入crosstool,然后&#8221;cp demo-arm.sh arm.sh&#8221; 并修改如下
set -ex
TARBALLS_DIR=/home/frankyue/arm/download  ＃工具链源码文件存放的位置
RESULT_TOP=/opt/crosstool                 ＃工具链安装位置
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES=&#8221;c,c++&#8221;
export GCC_LANGUAGES
eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh &#8211;notest
echo Done.
修改arm.dat 和 gcc-3.3.6-glibc-2.3.2.dat 文件如下：
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux
TARGET_CFLAGS=&#8221;-O&#8221;
－－－－－－－－－－－－－－－－－－－－－
BINUTILS_DIR=binutils-2.15
GCC_DIR=gcc-3.3.6
GLIBC_DIR=glibc-2.3.2
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
LINUX_DIR=linux-2.6.10
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
然后直接运行./arm.sh（要花好长时间）
但是我的出现了点错误，上网查了下因为我用的是UBUNTU，ubuntu将系统默认的shell设置成了dash (the Debian Almquist Shell)，所以通过脚本生成的文件格式和bash的不一样，导致了编译错误。解决：
sudo mv /bin/sh /bin/sh.old
sudo ln -sf bash /bin/sh
完成后新编译好的交叉工具会在/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin（如果你按以上做的话）然后就是添加环境变量到bashrc就OK了！
OK了 可以去尝试编译2.6的内核了！
参考《ARM嵌入式Linux设备驱动实例开发》及ursa的文章帮助
]]></description>
			<content:encoded><![CDATA[<p>一直没写要荒废了！去年TX给我介绍个Crosstool来编译gcc的，这个玩意是很好，但是当时怎么也弄不成功，搞的头都大了，今天才知道原来不匹配的东西你想弄还真是难！</p>
<p>为了能编译一个适合ARM的2.6内核，今天在一本书上看到介绍crosstool的用法！当然之前是有介绍自己一个一个介绍的慢慢的整合编译，但是费了九牛二虎之力还是不行各种错误不断，总会出现一个</p>
<blockquote><p>/usr/include/bits/fcntl2.h:51: error: call to &#8216;__open_missing_mode&#8217; declared with attribute error: open with O_CREAT in second argument needs 3 arguments</p>
<p><span id="more-173"></span></p></blockquote>
<p>的错误，查来查去没办法弄，好像是一个BUG，没找到解决办法！</p>
<p>只好用Crosstool来编译arm-linux-gcc(3.3.6版本)，所需的源码文件如下linux-2.6.10.tar.bz2,binutils-2.15.tar.bz2,gcc-3.3.6.tar.bz2,glibc-2.3.2.tar.bz2,glibc-linuxthreads-2.3.2.tar.bz2,linux-libc-headers-2.6.12.0.tar.bz2。</p>
<p>进入crosstool,然后&#8221;cp demo-arm.sh arm.sh&#8221; 并修改如下</p>
<blockquote><p>set -ex<br />
TARBALLS_DIR=/home/frankyue/arm/download  ＃工具链源码文件存放的位置<br />
RESULT_TOP=/opt/crosstool                 ＃工具链安装位置<br />
export TARBALLS_DIR RESULT_TOP<br />
GCC_LANGUAGES=&#8221;c,c++&#8221;<br />
export GCC_LANGUAGES</p>
<p>eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh &#8211;notest</p>
<p>echo Done.</p>
<p>修改arm.dat 和 gcc-3.3.6-glibc-2.3.2.dat 文件如下：</p>
<p>KERNELCONFIG=`pwd`/arm.config<br />
TARGET=arm-linux<br />
TARGET_CFLAGS=&#8221;-O&#8221;</p>
<p>－－－－－－－－－－－－－－－－－－－－－</p>
<p>BINUTILS_DIR=binutils-2.15<br />
GCC_DIR=gcc-3.3.6<br />
GLIBC_DIR=glibc-2.3.2<br />
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2<br />
LINUX_DIR=linux-2.6.10<br />
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0</p></blockquote>
<p>然后直接运行./arm.sh（要花好长时间）</p>
<p>但是我的出现了点错误，上网查了下因为我用的是UBUNTU，ubuntu将系统默认的shell设置成了dash (the Debian Almquist Shell)，所以通过脚本生成的文件格式和bash的不一样，导致了编译错误。解决：</p>
<blockquote><p>sudo mv /bin/sh /bin/sh.old<br />
sudo ln -sf bash /bin/sh</p></blockquote>
<p>完成后新编译好的交叉工具会在/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin（如果你按以上做的话）然后就是添加环境变量到bashrc就OK了！</p>
<p>OK了 可以去尝试编译2.6的内核了！</p>
<p><strong>参考《ARM嵌入式Linux设备驱动实例开发》及</strong><a href="http://infotech.blogbus.com/logs/19827306.html">ursa</a>的文章帮助</p>
]]></content:encoded>
			<wfw:commentRss>http://frankyue.me/2009/02/crosstool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
