【问题标题】:How to set gcc 4.3 default specs file?如何设置 gcc 4.3 默认规格文件?
【发布时间】: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&gt;&amp;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,所有这些都失败了。

标签: c++ c gcc gcc4


【解决方案1】:

正如 Johannes Schaub - litb 的 strace 建议所暗示的,这是编译器在哪里寻找文件的问题。事实证明,非工作安装在 .bashrc 中设置了一个环境变量,导致了混乱。

specs 文件的正确位置确实与 libgcc 所在的目录相同。请确保您正在寻找那里。

【讨论】:

  • @Gary,我很好奇……是什么环境变量导致了问题?
【解决方案2】:

我使用了这个命令行:

/usr/bin/set-gcc-default-3.sh i686-pc-mingw32

但你可能会想要:

/usr/bin/set-gcc-default-4.sh i686-pc-linux-gnu

(注意 -4 而不是 -3)

这是使用“替代品”构建的,请参阅

/usr/sbin/alternatives.exe --help

也可以查看http://linux.about.com/library/cmd/blcmdl8_alternatives.htm等页面

【讨论】:

  • 这看起来很有趣。 GCC 是否提供 set-gcc-default-* 脚本?我似乎没有在 Linaro 设备上安装它。
【解决方案3】:

您在构建过程中使用您的规范文件重新构建 gcc!

一个更简单的解决方案是创建一个别名:

alias gcc_Gary gcc -specs /<folder With Specs File>/newSpecsFile

【讨论】:

  • 我不相信别名可以在非交互式 shell(例如 Make uses)中工作。
猜你喜欢
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2022-12-25
  • 1970-01-01
相关资源
最近更新 更多