Chinaunix首页 | 论坛 | 博客
  • 博客访问: 206905
  • 博文数量: 67
  • 博客积分: 1237
  • 博客等级: 中尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-01 23:24
文章存档

2012年(8)

2011年(59)

分类: LINUX

2011-08-13 22:37:30

调整工具链

代码:

mv -v /tools/bin/{ld,ld-old}

mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}

mv -v /tools/bin/{ld-new,ld}

ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld

 

调整specs文件:

代码:

gcc -dumpspecs | sed \

-e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' \

-e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib/ @}' \

-e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > \

`dirname $(gcc --print-libgcc-file-name)`/specs

测试工具链是否被调整成功
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep '/lib'
如果显示[Requesting program interpreter: /lib/ld-linux.so.2]表示调整成功,动态库已经连接到了目标系统的/lib下。
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
应该显示
  /usr/lib/crt1.o succeeded
  /usr/lib/crti.o succeeded
  /usr/lib/crtn.o succeeded
grep -B1 '^ /usr/include' dummy.log
应该显示
  #include <...> search starts here:
   /usr/include
grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
应该显示
  SEARCH_DIR("/tools/i686-pc-linux-gnu/lib")
  SEARCH_DIR("/usr/lib")
  SEARCH_DIR("/lib");
grep "/lib/libc.so.6 " dummy.log
应该显示
  attempt to open /lib/libc.so.6 succeeded
grep found dummy.log
应该显示
  found ld-linux.so.2 at /lib/ld-linux.so.2
如果上面均显示正常,那么表明工具链调整成功,可以删除测试文件了
rm -v dummy.c a.out dummy.log

阅读(1610) | 评论(0) | 转发(0) |
0

上一篇:LFS第十一课笔记

下一篇:LFS第十三课笔记

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