不管怎样,龙芯是咱们应该骄傲的,但是用它来编译东西确实很慢,我们很需要一个交叉编译器,能够在性能稍好的平台上为龙芯平台编译程序,x86是目前比较常见的平台,本博在实际工作中,需要在gentoo系统上安装支持龙芯n32的交叉编译器,下面分享一下本博的安装过程。
crossdev是gentoo系统下很方便的交叉编译环境安装和卸载工具,想进一步了解可以参考本博的这篇文章Gentoo中的交叉编译利器–crossdev,这里只讨论有了crossdev之后的安装过程。
首先,我们需要支持n32的gcc,glibc,linux-header,insight和binutils.其中,gcc,gdb,insight和linux-header都已经有了官方支持,我们还需要glibc的一些patch。头疼打patch这种繁重的劳动?别急,已经有国内的开源爱好者们做好了这些,我们仅仅需要几个附加步骤即可。

我们需要首先有gentoo的龙芯overlay,这个overlay是gentoo开发者zhllg维护的龙芯gentoo n32系统的overlay,因为我们需要n32的glibc,所以就需要这个overlay。虽然你可以直接只下载glibc的相关文件,但是推荐你直接clone整个overlay,这样的话,以后你就可以直接用git工具和zhllg的overlay更新了。如果不懂什么是overlay,可以参考这个链接Gentoo Overlays: Users’ Guide。你需要一个位置存放overlay的内容,因为我们只需要glibc,所以你最好放在/usr/local/portage/以外的地方,然后在/usr/local/portage/做glibc的链接到龙芯的overlay里,这样能避免安装其他软件中的龙芯支持,搞乱你自己的x86系统。假定你在/root下存放overlay。你需要执行以下命令:
cd /root
git clone git://www.gentoo-cn.org/var/git/loongson.git
cd /usr/local/portage/
mkdir loongson
cd loongson
ln -s /root/loongson-overlay/sys-libs/  sys-libs    ##glibc指向overlay中的glibc
ln -s /root/loongson-overlay/sys-devel/  sys-devel  ##将gcc指向overlay中的gcc

至于为啥要把gcc也做软链接到龙芯的overlay,其实是因为历史遗留问题,原来的gcc4不支持,需要打补丁,现在不需要了,不过以后可能还需要,所以就做了这个软链接,不过你到overlay里,ls -l一下可以看到其实overlay里gcc也是链接,指向/usr/portage/下的gcc。

接下来就要告诉emerge,从overlay中找工具链中的gcc/binutils/glibc。我们要编辑/etc/make.conf文件,添加本地龙芯的portage,这里要注意,之所以我在/usr/local/portage下又创建文件夹是因为我有layman。另外你需要确保/usr/local/portage/loongson在你所有overlay查找的最前面:
PORTDIR_OVERLAY="/usr/local/portage/loongson $PORTDIR_OVERLAY"

这样做是为了确保使用龙芯overlay中的gcc和binutils。

接下来就能直接安装了:
crossdev -t mips64el-unknown-linux-gnu

之后你就能享受交叉编译了,mipsel-unknown-linux-gnu-gcc 编译个helloword试试吧:)

龙芯是咱们自己的东西,大家一起努力才能让龙芯走向世界!

这里要注意几个问题:
1,如果你是新安装的glibc,龙芯overlay中的glibc是2.10的,你gentoo系统的glibc的版本不能比这个低才行,不然会有冲突,具体的错误提示我忘记了。
2,一定要让龙芯overlay在PORTDIR_OVERLAY的最前面。
3,具体安装以下内容
linux-headers-2.6.27-r2 from portage.
binutils-2.19.1-r1 from loongson overlay.
gcc-4.4.2 from portage. The gcc in loongson overlay currently is just a symlink to portage gcc.
glibc-2.10.1 from loongson overlay.

参考

http://r0bertz.blogspot.com.sixxs.org/2009/11/update-on-building-mips64el-cross.html

相关文章:

  3 Responses to “用crossdev装龙芯的n32 gnu交叉工具链”

  1. [...] 用crossdev装龙芯的n32 gnu交叉工具链 – 335 views [...]

  2. 呃,你不是搞的O32的东西么?
    怎么又成n32了?

    • @rsqk, 这些文章是已经写好,然后我设置的定时发布 : ) N32是前几天做的,O32的文章今天晚上才会出现在首页上 : )

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量