【发布时间】:2011-08-12 07:34:58
【问题描述】:
当使用 gcc 4.3.2 版时,我看到了如何使用以下方法生成规范:
$ /usr/local/gcc-4.3.2/bin/gcc -v
Using built-in specs
现在切换到与 libgcc 相同的目录:
cd /usr/local/gcc-4.3.2/lib/gcc/x86_64-unknown-linux-gnu/4.3.2
/usr/local/gcc-4.3.2/bin/gcc -dumpspecs > specs
我有一个可以修改的填充规格文件。但是,一旦完成,我仍然会看到:
$ /usr/local/gcc-4.3.2/bin/gcc -v
Using built-in specs
我如何告诉 gcc 默认使用该规范文件,而不是强制我在每次编译时传递 -specs 参数?我希望它与我拥有的另一个系统相匹配:
$ /usr/local/gcc-4.3.2/bin/gcc -v
Reading specs from /usr/local/gcc-4.3.2/lib/gcc/i686-pc-linux-gnu/4.3.2/specs</code>
如您所见,这两个系统之间的主要区别在于现有设置是 32 位的,而我现在尝试在 64 位系统上进行匹配。 Linux 的版本是相同的,我正在编译相同版本的 gcc。 (两个系统 gcc 4.3.2 是第二个 gcc 安装,用 4.1.2 编译 4.3.2)
【问题讨论】:
-
尝试
strace gcc 2>&1 | grep -i spec看看它在哪里寻找文件。 -
@Johannes Schaub - litb 它没有给出任何结果,而工作系统给出了 specs 文件的路径。对于位于 /usr/bin 的 4.1.2 版本的 gcc,它也没有给出运行该命令的结果。 (工作系统为 4.3.2 和 4.1.2 版本的编译器提供了路径,尽管 4.1.2 版本有“(没有这样的文件或目录)”,因为它使用的是内置规范。)
-
@Johannes Schaub - litb 从头开始。没有安装 Strace。它似乎正在尝试访问
/usr/local/include/x86_64-unknown-linux-gnu/4.3.2/specs、/usr/local/include/specs、/usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.2/specs、/usr/local/include/../../x86_64-unknown-linux-gnu/lib/specs、/usr/local/include/../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/4.3.2/specs或/usr/local/gcc-4.3.2/lib/gcc/x86_64-unknown-linux-gnu/specs,所有这些都失败了。