在Mac OS X 10.6中,Apple更改了g++的默认目标,以生成64位而不是32位代码。我知道我可以在命令行上指定“-arch i386”,但是否有任何方法通过环境变量或类似的方式全局更改默认架构?(我一直在遇到链接错误,因为我在移植项目时很难找到需要指定体系结构的所有位置。)
CXXFLAGS
、CFLAGS
和 LDFLAGS
环境变量设置为包括 -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++
。您可以设置路径,使其首先搜索您的私有bin目录。
在此bin目录中放置一个g++脚本,该脚本明确调用正确的g++编译器并使用适当的标志。
设置g++别名。这将优先于命令使用。将别名设置为使用适当的标志运行命令。
注意:这两个选项都假定您是从命令行构建的,因为XCode可能会显式执行g++二进制文件。
-arch
是苹果特定的 GCC 选项。 - user557219