Chinaunix首页 | 论坛 | 博客
  • 博客访问: 259382
  • 博文数量: 130
  • 博客积分: 4012
  • 博客等级: 上校
  • 技术积分: 2030
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-10 10:40
文章分类

全部博文(130)

文章存档

2010年(130)

我的朋友

分类: LINUX

2010-01-12 11:23:51

Binutils 是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。

安装下列程序: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings 和 strip

安装下列库文件: libiberty.a, libbfd.[a,so] 和 libopcodes.[a,so]

安装依赖关系
Binutils 依赖于: Bash, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed, Texinfo.

Binutils相应版本的源码包

查看版本号
ld -v

Binutils安装
1.解压
tar vxzf ...

2.创建专门的编译目录:
mkdir ../binutils-build

3.为编译 Binutils 作准备:
../binutils-2.14/configure \
    --prefix=/tools --disable-nls

../binutils-2.14/configure --prefix=/tools \
    --enable-shared --with-lib-path=/tools/lib
其中--with-lib-path=/tools/lib: 这个参数给配置脚本指定缺省的库搜索路径。我们不希望库搜索路径里包含主系统的目录。

4.编译它:
make configure-host
make LDFLAGS="-all-static"

其中configure-host: 它强制所有的子目录都进行配置,如果没有这个参数,静态连接就会失败,因此我们暂且用它来解决这个问题。

LDFLAGS="-all-static": 这个参数告诉连接器,把 Binutils 软件包中所有的程序都静态连接。然而,严格地说,首先是"-all-static" 被传递给libtool,libtool再把"-static" 传递给连接器。

5.安装软件包:
make install

6.现在,为后面的"锁定"glibc准备连接器脚本:
make -C ld clean
make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib
其中-C ld clean: 它告诉make,删除所有编译生成的文件,但子目录ld里的保留。

-C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib: 它重新编译 ld 子目录中的所有文件。LIB_PATH是 makefile 中的一个变量,在命令行里指定它,使我们可以覆盖缺省值,让它指向我们的临时工具目录。这个变量的值就是连接器的缺省库搜索路径。本章后面,你会看到这样做的目的。
阅读(888) | 评论(0) | 转发(0) |
0

上一篇:linuxfromscratch.org/mirrors

下一篇:C++ 编译

给主人留下些什么吧!~~