如何在tinycolinux32上安装tinycolinux64内核和工具链

  介绍

这篇文章主要讲解了“如何在tinycolinux32上安装tinycolinux64内核和工具链”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”如何在tinycolinux32上安装tinycolinux64内核和工具链”吧!

交叉编译tinycolinux3。x 64

我们是在一台ubuntu14.04 64位上的gcc485交叉编译出如下tinycolinux 3。x 64的(不要直接用tinycolinux上32位的gcc编译这个内核):

参照《将tinycolinux以硬盘模式安装到云主机》一文的相似做法,我们从http://mirrors.163.com/tinycorelinux/3.x/release/src/kernel/下载64位的src和补丁,打开虚拟化中的virtio pci选项,编译进virtio块和网络驱动,轻易在拱/x86/引导下得到bzimage,放到引导中启动。发现可以跟原有的rootfs一起正常启动.uname - m显示x86_64.file/boot/bzimage,显示x86引导内核。猜这是因为在。配置文件中同时开启了32和64支持,32位程序能运行在64位上,且原来的rootfs中的32位binutils和gcc未变。

如果把64位linux的某程序拷进来文件它显示64位精灵,执行它会提示没有找到,这是因为它依赖的binutils ld没有,调用gcc - o helloworld。c -64,提示未实现的,这是因为3。x的rootfs是没有对应的GCC 64的。接下来需要交叉编译一个:

在32 tinycolinux上boostrap GCC编译4.4.3 64三件tinycolinux 3套。x 64目标

一般地,GCC支持从高向低crosscompile,反过来要难一点,所以这里我们采取最简单的方法:从同版本的32位GCC引导编译出同版本的GCC,采用本地的32位GCC引导式交叉编译出64位的GCC,不再使用外来交叉编译的方案(直接那样也行)。当然这种方案是设想了tinycolinux上本来就存在GCC的事实基础上,如果追求更通用的实践目的,还是从外面的系统交叉编译进来好。

这样产生出来的GCC仅是一个目标到x86_64-pc-linux-gnu的GCC版443本,因为在本机上构建,所以这个构建和主机都不变,为本机系统主机,但是并不影响我们的工作继续,至于以后你要用这个GCC作鸡生蛋蛋生鸡的事,比如可以用这个再次自举GCC443到主机也为443年的版本原地覆盖,这都是以后的事.GCC支持从32到64或反过来的交叉构建。

我们选用2。x回购的make.tcz(3.81版,为什么不使用3。x的让382接下来会涉及到)和选用3。x回购的gcc443 32位(为什么不用4.倍的gcc471:因为4.倍后采用eglibc,在编译很多程序时会遇到重复定义错误,这个时候就应该想到是版本问题),走从gcc443 32位编译出gcc443 64的方案,要保证系统绝对干净,否则可能会遇到各种坑(比如不能计算机对象文件前缀,等),介绍一下制作纯净tinycolinux系统的方法:

按《在硬盘上安装tinycolinux》的方法重新安装rootfs,相当于重装系统,除了保留第一步的64 bzimage在引导下引导不变,你可能需要额外安装openssh。然后下载3. x的工具链并安装:

 sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/gmp.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/libmpc.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/mpfr.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/ppl.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/cloog.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/binutils.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/bison.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/diffutils.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/file.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/findutils.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/flex.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/gawk.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/gcc.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/grep.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/m4.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/make.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/patch.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/pkg-config.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/sed.tcz
  sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/base-dev.tcz
  # sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/gcc_libs.tcz
  # sudo  unsquashfs  -f  -d /,/吨标煤/gccbase/linux-headers-2.6.33.3-tinycore.tcz 

然后下载以下并准备,都解压到一个目录。

http://mirrors.163.com/tinycorelinux/3.x/release/src/compiletc_other/(mpfr-2.4.2.tar.xz、gmp-4.3.2.tar.xz binutils-2.20.tar.xz)

如何在tinycolinux32上安装tinycolinux64内核和工具链