【问题标题】:Building Python from source as a framework on Mac OS X Mountain Lion: error in headers在 Mac OS X Mountain Lion 上从源代码构建 Python 作为框架:标头中的错误
【发布时间】:2013-07-28 16:17:09
【问题描述】:

我正在从源代码构建 Python(3.4 开发版)作为 OS X 10.8 上的框架。我是 Mac OS X 内部的相对新手,无法弄清楚为什么 OS X 框架头文件会导致这些错误。有人可以给我一些指点吗?

我在我的 mac 上使用最新版本的 GNU gcc,而不是 Apple 提供的 LLVM 编译器。也许,这会导致兼容性问题。

gcc -Wno-unused-result -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -o FileSettings.o -c ./FileSettings.m
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:123:0,
                 from ./FileSettings.h:9,
                 from ./FileSettings.m:9:
/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:69:24: error: expected identifier or ‘(’ before ‘^’ token
 @property (copy) void (^terminationHandler)(NSTask *) NS_AVAILABLE(10_7, NA);
                        ^
/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:72:1: error: expected identifier before ‘end’
 @end
 ^
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:159:0,
                 from ./FileSettings.h:9,
                 from ./FileSettings.m:9:
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:36:15: error: expected identifier or ‘(’ before ‘^’ token
 typedef void (^NSUserScriptTaskCompletionHandler)(NSError *error);
               ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:37:1: error: unknown type name ‘NSUserScriptTaskCompletionHandler’
 - (void)executeWithCompletionHandler:(NSUserScriptTaskCompletionHandler)handler;
 ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:53:15: error: expected identifier or ‘(’ before ‘^’ token
 typedef void (^NSUserUnixTaskCompletionHandler)(NSError *error);
               ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:54:1: error: unknown type name ‘NSUserUnixTaskCompletionHandler’
 - (void)executeWithArguments:(NSArray *)arguments completionHandler:(NSUserUnixTaskCompletionHandler)handler;
 ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:68:15: error: expected identifier or ‘(’ before ‘^’ token
 typedef void (^NSUserAppleScriptTaskCompletionHandler)(NSAppleEventDescriptor *result, NSError *error);
               ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:69:1: error: unknown type name ‘NSUserAppleScriptTaskCompletionHandler’
 - (void)executeWithAppleEvent:(NSAppleEventDescriptor *)event completionHandler:(NSUserAppleScriptTaskCompletionHandler)handler;
 ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:86:15: error: expected identifier or ‘(’ before ‘^’ token
 typedef void (^NSUserAutomatorTaskCompletionHandler)(id result, NSError *error);
               ^
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:87:1: error: unknown type name ‘NSUserAutomatorTaskCompletionHandler’
 - (void)executeWithInput:(id <NSSecureCoding>)input completionHandler:(NSUserAutomatorTaskCompletionHandler)handler;
 ^
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:160:0,
                 from ./FileSettings.h:9,
                 from ./FileSettings.m:9:
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:46:11: error: expected identifier or ‘(’ before ‘^’ token
     void (^_interruptionHandler)();
           ^
make[2]: *** [FileSettings.o] Error 1
make[1]: *** [install_PythonLauncher] Error 2
make: *** [frameworkinstallapps] Error 2

【问题讨论】:

    标签: macos frameworks osx-mountain-lion cpython


    【解决方案1】:

    这些错误与 Apple 为 C, C++ and Objective-C languages 开发的“阻止”扩展名完全对应。 GCC(GNU 版本)无法识别块的出现并报错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2013-01-02
      • 1970-01-01
      相关资源
      最近更新 更多