在Mac OS X上更改默认的g++架构?

5

在Mac OS X 10.6中,Apple更改了g++的默认目标,以生成64位而不是32位代码。我知道我可以在命令行上指定“-arch i386”,但是否有任何方法通过环境变量或类似的方式全局更改默认架构?(我一直在遇到链接错误,因为我在移植项目时很难找到需要指定体系结构的所有位置。)


cc1: 错误:无法识别命令行选项“-arch” - 我想你的意思是-m32,不是吗? - user502515
2
@user502515:-arch 是苹果特定的 GCC 选项。 - user557219
2个回答

2
据我所知,根据您使用的配置和构建系统,将 CXXFLAGSCFLAGSLDFLAGS 环境变量设置为包括 -arch i386 可能有帮助。但是,某些配置和构建系统比较棘手,仅设置这些变量可能不足够。
另一个选择是在 PATH 位置提供一个 g++(以及必要的其他工具)的 bash 脚本,并调用实际命令时添加 -arch i386 以及传递给脚本的命令行参数。
前面段落中描述的解决方案的替代方法是使用 arch(1) 的各种形式之一。例如,上述 shell 脚本可以调用 arch -i386 /usr/bin/g++。您还可以将 ARCHPREFERENCE 环境变量设置为类似于 g++:/usr/bin/g++:i386,x86_64 的内容,并调用 arch /usr/bin/g++。但是,请注意,您必须使用 arch 来调用 /usr/bin/g++

1

选项1

您可以设置路径,使其首先搜索您的私有bin目录。
在此bin目录中放置一个g++脚本,该脚本明确调用正确的g++编译器并使用适当的标志。

选项2

设置g++别名。这将优先于命令使用。将别名设置为使用适当的标志运行命令。

注意:这两个选项都假定您是从命令行构建的,因为XCode可能会显式执行g++二进制文件。


1
在使用别名时必须小心,因为它们不会被子shell继承。 - user557219

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接