【发布时间】:2010-12-17 23:15:04
【问题描述】:
我们正在为我们的项目使用带有 GCC 的预编译头文件,并像这样构建它们:
gcc $(CFLAGS) precompiledcommonlib.h
现在我正在 OSX 10.6 上构建项目,并尝试使用同时为所有架构构建的漂亮功能,如下所示:
gcc $(CFLAGS) -c -arch i386 -arch x86_64 commonlib.c
但是,这似乎不适用于预编译的标头:
gcc $(CFLAGS) -arch i386 -arch x86_64 precompiledcommonlib.h
Undefined symbols for architecture i386:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Undefined symbols for architecture x86_64:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/z1/z1A0sPkqGDyPrZWo9ysVK++++TI/-Tmp-//cc3W2gwd.out (No such file or directory)
编辑: 正如 Mark 根据 XCode 指出的那样,必须为每个架构单独构建预编译头文件,所以我的问题是,是否有任何方法可以让 gcc 在构建通用对象时使用正确的预编译头文件。
我确实意识到我可以像 XCode 那样完全独立地构建每个架构,但我更愿意利用同时构建它们的可能性,而不必搞乱不同的构建配置。
【问题讨论】:
-
我只是尝试做同样的事情,据我所知,您无法生成一个 PCH 文件,同时为 Apple 的 GCC 提供两个
-arch标志。 Qt 家伙似乎在做一些奇怪的事情来让它工作,你可能想检查一下...qt.gitorious.org/qt/qt/merge_requests/2193
标签: macos gcc x86-64 precompiled-headers