+ -
当前位置:首页 → 问答吧 → 请教各位高手specs文件在哪?

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

时间:2008-04-15

来源:互联网

如题:我在第一次调整工具链时找不到这个文件,请知道的 高手写出路径好嘛?

作者: longkz   发布时间: 2008-04-15

我装了两遍,都是到这,在/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可以导出。
真是不解??

作者: longkz   发布时间: 2008-04-15

如果没有用户指定的spec,gcc会使用内建的spec文件。这个文件是编译到了gcc可执行文件内部的,你是无法改变的,你能做的只是产生自定义的spec文件放在特定目录下。

作者: 地球发动机   发布时间: 2008-04-15

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

作者: longkz   发布时间: 2008-04-15

引用:
作者: longkz
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-04-15

谢谢,终于明白了!

作者: longkz   发布时间: 2008-04-15

发动机讲的真好呀,受教!

作者: peizhiluo   发布时间: 2008-04-19

会不会是在
代码:
gcc -dumpspecs | sed 's@/lib/ld-linux.so.2@/tools&@g' \
 > `dirname $(gcc -print-libgcc-file-name)`/specs
的时候忘了打这个>
我也倒斗一下,说不定还是有犯同样的错误

作者: 残剑饮血   发布时间: 2009-01-23