LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3187|回复: 7

请教各位高手specs文件在哪?

[复制链接]
发表于 2008-4-15 14:32:06 | 显示全部楼层 |阅读模式
如题:我在第一次调整工具链时找不到这个文件,请知道的 高手写出路径好嘛?
 楼主| 发表于 2008-4-15 16:11:09 | 显示全部楼层
我装了两遍,都是到这,在/tools下找不到。只在:
/mnt/lfs/sources/gcc-build/gcc/specs
/mnt/lfs/sources/gcc-build/gcc/stage2/specs
/mnt/lfs/sources/gcc-build/gcc/stage1/specs
  按书用 gcc -dumpspecs可以导出文件,删除gcc-
build文件后还按书用 gcc -dumpspecs可以导出。
  真是不解??
回复 支持 反对

使用道具 举报

发表于 2008-4-15 17:13:55 | 显示全部楼层
如果没有用户指定的spec,gcc会使用内建的spec文件。这个文件是编译到了gcc可执行文件内部的,你是无法改变的,你能做的只是产生自定义的spec文件放在特定目录下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 18:14:42 | 显示全部楼层
SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE
  在这个命令之后就可以发现这个文件:
/mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/
4.0.3/specs
回复 支持 反对

使用道具 举报

发表于 2008-4-15 18:56:38 | 显示全部楼层
Post by longkz;1838563
SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &&
gcc -dumpspecs > $SPECFILE &&
sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile &&
mv -vf tempspecfile $SPECFILE &&
unset SPECFILE
  在这个命令之后就可以发现这个文件:
/mnt/lfs/tools/bin/../lib/gcc/i686-pc-linux-gnu/
4.0.3/specs

你应该理解这些命令的含义:
SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs
这条命令调用dirname $(gcc -print-libgc-file-name)并获得其结果赋给SPECFILE变量。
dirname命令用来从带有文件名的完整路径中提取目录名。gcc -print-libgcc-file-name的结果是gcc所引用的libgcc的完整路径名。
因此,SPEC的结果就是把libgcc更换为specs之后所得的路径名。注意此时specs文件是否存在并不影响命令执行。
gcc -dumpspecs > $SPECFILE
这条命令使gcc把内置的specs保存在SPECFILE变量所指文件里。因此specs文件便是这个时候产生的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 19:01:51 | 显示全部楼层
谢谢,终于明白了!
回复 支持 反对

使用道具 举报

发表于 2008-4-19 14:39:50 | 显示全部楼层
发动机讲的真好呀,受教!
回复 支持 反对

使用道具 举报

发表于 2009-1-23 16:42:25 | 显示全部楼层
会不会是在
  1. gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g' \
  2.   > `dirname $(gcc -print-libgcc-file-name)`/specs
复制代码
的时候忘了打这个>
我也倒斗一下,说不定还是有犯同样的错误
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表