ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Mac OS 10.6 / Snow Leopard上的Python构建问题

2019-10-24 07:57:13  阅读:295  来源: 互联网

标签:32-bit gcc build python macos


我在Snow Leopard上遇到了Python 2.6.4的构建问题.

> Mac OS X 10.6
> Yonah CPU,32位
> gcc-4.2.1

更新我

通过从CFLAGS中删除所有非标准的include和库来解决(碰巧那里是一个uuid / uuid.h …).尽管如此,尽管有以下描述的错误,它还是进行了编译,其中/usr/include/hfs/hfs_format.h:765是一个热点.对于好奇的还是机智的,有问题的源文件:

$cat /usr/include/hfs/hfs_format.h
...
748 #include <uuid/uuid.h>
749 
750 /* JournalInfoBlock - Structure that describes where our journal lives */
751 
752 // the original size of the reserved field in the JournalInfoBlock was
753 // 32*sizeof(u_int32_t).  To keep the total size of the structure the 
754 // same we subtract the size of new fields (currently: ext_jnl_uuid and
755 // machine_uuid).  If you add additional fields, place them before the
756 // reserved field and subtract their size in this macro.
757 //
758 #define JIB_RESERVED_SIZE  ((32*sizeof(u_int32_t)) - sizeof(uuid_string_t) - 48)
759 
760 struct JournalInfoBlock {
761         u_int32_t       flags;
762         u_int32_t       device_signature[8]; // signature used to locate device.
763         u_int64_t       offset;        // byte offset to the journal on the device
764         u_int64_t       size;          // size in bytes of the journal
765         uuid_string_t   ext_jnl_uuid;
766         char            machine_serial_num[48];
767         char            reserved[JIB_RESERVED_SIZE];
768 } __attribute__((aligned(2), packed));
769 typedef struct JournalInfoBlock JournalInfoBlock;
...

我将问题悬而未决,因为构建产生了太多警告,并且此错误仍然让我感到困惑…

更新二

为了摆脱有关部署目标的警告,我在编译之前编辑了Makefile:

$cat Makefile
...
126 MACOSX_DEPLOYMENT_TARGET=10.3 # => 10.6
...

原始问题

尝试从源代码构建Python 2.6.4时,出现错误:

$uname -v
$Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; \
    root:xnu-1486.2.11~1/RELEASE_I386

$cd ~/src/Python-2.6.4
$./configure --enable-universalsdk=/ --prefix=$HOME
checking for --with-universal-archs... 32-bit
...
checking machine type as reported by uname -m... i386
...
checking for OSX 10.5 SDK or later... no   // <- But I have XCode + the SDKs installed?
...

$make
...

...
/usr/include/hfs/hfs_format.h:765: error: \
    expected specifier-qualifier-list before ‘uuid_string_t’

它似乎扎根于Python / mactoolboxglue.c.提示欢迎!

我也收到很多这类警告:

/usr/include/AvailabilityMacros.h:108:14: warning: #warning Building for \
Intel with Mac OS X Deployment Target < 10.4 is invalid.
gcc -c -arch ppc -arch i386 -isysroot /  -fno-strict-aliasing -DNDEBUG -g \
-fwrapv -O3 -Wall -Wstrict-prototypes  -I. -IInclude -I./Include  \
-DPy_BUILD_CORE -o Objects/structseq.o  Objects/structseq.c
In file included from /usr/include/architecture/i386/math.h:626,
             from /usr/include/math.h:28,
             from Include/pyport.h:235,
             from Include/Python.h:58,
             from Objects/structseq.c:4:

解决方法:

尝试在配置参数中添加–universal-archs = 32位.

编辑:您可能还需要设置环境变量MACOSX_DEPLOYMENT_TARGET = 10.6并显式使用10.6 SDK:

export MACOSX_DEPLOYMENT_TARGET=10.6
./configure --universal-archs=32-bit --enable-universalsdk=/Developer/SDKs/MacOSX10.6.sdk ...

在10.6上构建Python仍然存在一些配置问题.如果重新使用构建目录,请确保清除了先前运行configure可能遗留下来的所有缓存文件.

顺便说一句,如果您只需要32位版本,则可以使用python.org版本的2.6.4 OS X安装程序.

标签:32-bit,gcc,build,python,macos
来源: https://codeday.me/bug/20191024/1918993.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有