作者zxvc (zxvc)
看板LinuxDev
标题Re: [问题X] Building a GNU/Linux ARM Toolchain …
时间Mon Apr 23 23:21:13 2007
※ 引述《FFz (澎湖.仙人掌.234)》之铭言:
: 我安装好了,但是有一些疑问想请教各位
: 我是参照此教学的
: Building a GNU/Linux ARM Toolchain (from scratch)
: http://www.schnozzle.org/~coldwell/toolchain/
: 底下想请各位帮忙解惑的地方有很多
: 麻烦各位帮个忙,谢谢
: 最底下有我的系统相关资讯
: 问题开始,先谢过了
: -------------------------------------------------------
: 原着在安装Glibc时下 --build=i386-redhat-linux
: 底下是我的安装Glibc时设 --build=i686-linux
: ../../glibc-2.3.5/configure
: --prefix=${PREFIX}/${TARGET}
: --host=arm-elf
: --build=i686-linux
: --enable-shared
: --enable-add-ons=linuxthreads
: --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
: 可是我下 volname,得到
: Debian 3.1 r5 i386 Bin-1
: 那麽有差别吗
: 还有,我电脑是用amd的,可是i686, i386是intel的架构
: 那有amd的参数值吗?
这应该不是很大的问题,就我的经验i386与i686差异不会很大。
: -------------------------------------------------------
: 请问,在安装时gcc or glibc 都会填 --target, --host, --build, --prefix
部份有相关,例如在编gcc的时候要去找glibc的表头档,
这时候gcc的configure的--with-sysroot就不能设错。
: 这两者之间,的参数有相关吗; glibc没有 --target这个参数
^^^^^^^^^^^^^^^^^^
glibc原始码里的INSTALL说明书是这样说的:
`--build=BUILD-SYSTEM'
`--host=HOST-SYSTEM'
These options are for cross-compiling. If you specify both
options and BUILD-SYSTEM is different from HOST-SYSTEM, `configure'
will prepare to cross-compile glibc from BUILD-SYSTEM to be used
on HOST-SYSTEM. You'll probably need the `--with-headers' option
too, and you may have to override CONFIGURE's selection of the
compiler and/or binutils.
: --prefix 这个参数是用来设定安装的路径吗
^^^^^^^^^^
是的。不过详细的路径设定通常要看你解压缩的原始码里的说明书。
: -------------------------------------------------------
: 关於,Building a GNU/Linux ARM Toolchain (from scratch)
: (http://www.schnozzle.org/~coldwell/toolchain/)
: 这篇教学,分成下列数个步聚
: 1.Setup
: 2.Get the sources
: 3.GNU binutils
: 4.Linux Kernel Headers
: 5.Glibc headers
: 6.Stage 1 GCC
: 7.GNU C Library
: 8.Stage 2 GCC
: 9.Linux Kernel Image
: 而这篇教学是建立一 cross-compiler toolchain for ARM
: 其中因为安装glibc(step 7) 需要先有一 compiler
: 所要先安装一 c compiler(step 6)
: 那麽,我问题一来了
: 为了安装 glibc 而预先安装的 c compiler
: 是 for arm的吗?
: -------------------------------------------------------
: 问题二,我先假设,如果 c compiler不是 for arm的
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这句话有点含糊。
你要表达的意思应该是这样吧:
『如果 c compiler的target不是 for arm的』
(换句话说这个c compiler编出来的程式是不能在ARM上执行的。)
因为『如果 c compiler不是 for arm的』这句话的意思也可以是说:
有个c compiler不是在ARM上执行的
(换句话说这个c compiler不能在ARM上执行、编译程式。)
的确有人把c compiler装在ARM上执行,
不过我不清楚是怎麽办到的。
: 那麽编译出来的 glibc
: 当 Stage 2 GCC ( step 8 ) 的 gcc
: 在写程式时要 include glibc 中的某函式库
: 这样到时编译出来的程式会 for arm吗
Stage 2 GCC在编译cross gcc所用的编译器是就是native gcc。
因为Stage 2 GCC是要编一个可以在你的x86电脑上run的cross compiler。
但这个cross compiler编出来的程式并不能直接在你电脑上run,
要丢到ARM机器上run,或者你可以用GDB/ARMulator模拟。
: -------------------------------------------------------
: 设定 $TARGET时
: TARGET = arm-elf
: 或
: TARGET = arm-linux 有差吗?
这个资讯可以在gcc原始码资料夹找到说明书,例如:
gcc-3.3.6/INSTALL/specific.html
: -------------------------------------------------------
: 怎麽确认compiler所编出来的程式
: 能够在某个架构上执行呢,例如:ARM
用file这个指令後面接执行档可以查到一些资讯,例如:
file a.out
a.out: ELF 32-bit LSB executable, ARM, version 1, statically linked, not
stripped
: -------------------------------------------------------
: 此教学中 "Building a GNU/Linux ARM Toolchain (from scratch)"
: 有一步聚是安装 Stage 1 GCC
: 以及最後一步骤安装 Stage 2 GCC
: 这两个步骤是先安装一gcc,在用此gcc来编译另一个gcc
^^^^^^^^^^^^^^^^^^^^^^
是的。
: 那麽这样,可以同一版本的gcc,来编同一版本的gcc吗
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
这句话不是很懂。
你前面与後面的gcc分别是指那一个gcc?
是stage 1,还是stage 2,还是native gcc?
: 或者是,两者gcc都是不同版本吗?
: 最後最後,己经快一天半没睡了.....先来休息一下
加油,有空多读一点文件,才不会试得这麽辛苦。
(虽然有些问题可能读了文件也不见得能解决 XD)
: ====系统相关资讯====
: uname -nr
: debian 2.4.27-3-386
: volname
: Debian 3.1 r5 i386 Bin-1
: ====系统GCC相关资讯====
: dpkg -l gcc
: ii gcc 3.3.5-3 The GNU C compiler
: ====安装程式相关资讯====
: binutils-2.16.tar.gz, linux-2.6.10.tar.gz,
: glibc-linuxthreads-2.3.5.tar.gz, glibc-2.3.5.tar.gz,
: gcc-3.4.4.tar.bz2, 2.6.10-at91.patch.gz,
: 26_at91_serial.c.gz, flow.c.diff,
: ioperm.c.diff, t-linux.diff,
--
Albert Einstein :
If there is any religion that could cope with modern scientific needs it
would be Buddhism.
《金刚经》一切有为法 如梦幻泡影 如露亦如电 应作如是观
http://web.cc.ncu.edu.tw/~93501025/jg.doc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.200.121