VS2013编译python源码
系统:win10
手头有个python模块,是用C写的,想编译安装就需要让python调用C编译器。直接编译发现使用的是vc9编译,不支持C99标准(两个槽点:为啥VS2008都还不支持C99?手头这个C代码为啥不好好写?)
anyway,此时两个想法,一个是改C源码,另一个是自行用VS2013编译一个python。事后证明第一个想法简单容易。。第二个想法实际试过之后,感觉难度很大,水很深,最后也没有淌出这浑水,简单记录下过程。
==== 分割线 ====
因为现在(2016年11月4日)python2.7在windows下的安装包,无论是直接python27.exe还是anaconda2安装的python,都是用vc9(vs2008)编译的。(python没啥神秘的,不妨简单认为python就是一个用C/C++写的一个项目,就像OpenCV这种)。
但是现在都2016了,为什么还要用VS2008来编译呢?手头要编译的一个python模块,其C代码需要C99支持,VS2013才开始支持C99,VS2015又过于巨无霸,那就用VS2013编译一个python呢?
- 下载python源码,装svn
解压后进入D:\build\Python-2.7.12\PCbuild目录
发现有个externals目录里面是空的。像ssl tk tcl sqlite等模块都需要把C源码放这里的。手动放肯定是姿势有问题的。看readme发现需要装svn并添加到path,调用get_externals.bat会使用svn从python的repo上自动checkout下来这些external的源码 - 编译
双击打开PCbuild\pcbuild.sln
注意选择x64 release模式 - 呃,这里就各种问题了
比如nmake找不到,这需要手动添加到path再重开vs
再比如tcl.h等头文件找不到,怎么会找不到呢,明明在externals目录中好不好。需要手动添加
...
最后发现tcl, tk, tix,_tkinter这4个项目,死活编译不出来,真是扫兴。当然如果只是要用python,那应该已经编译好了。
VS2013编译python源码的更多相关文章
- 用vs2013编译lua源码方法(一)
用vs2013编译lua源码方法 来源:网络 编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下 ...
- windows使用VS编译python源码
使用VS2021编译python源码 说明,使用VS2019也是可以的. 环境准备 对于VS2019首要要安装必要的环境 到python官网下载源码压缩包以及解压(红色箭头任选一个都行) 打开下载好的 ...
- ubuntu编译python源码的坑
在linux平台下编译python时只需要3条命令. 编译步骤 在github或https://www.python.org/downloads/中下载python源码 解压压缩包进路目录执行 1. ...
- 用vs2013编译lua源码方法
1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到 F:\lua-5.2.3 注意下载的版本,如果是 ...
- vs2013编译obs源码
obs源码下载 一种是在GitHub上下载最新的代码 git clone --recursive https://github.com/jp9000/obs-studio.git --recursiv ...
- 《python源码剖析》笔记一——python编译
1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:
- (转载)Linux如何编译安装源码包软件
一.什么是源码包软件: 顾名思义,源码包就是源代码的可见的软件包,基于Linux和BSD系统的软件最常见:在国内源可见的软件几乎绝迹:大多开源软件都是国外出品:在国内较为出名的开源软件有fcitx;l ...
- [原]在win上编译 subversion 源码实践Tonyfield的专栏
(百度和网页的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。) [原]在win上编译 subversion 源码实践 2013-6-9阅读400 评论0 (参考 ...
- Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决
昨晚在编译源码,make一段时间之后报错如下: # A fatal error has been detected by the Java Runtime Environment: # # SIGSE ...
随机推荐
- 事故记录:php-cgi进程过多导致系统资源耗尽
事故现象:机房一台服务器运行一段时间后,突然发现系统资源即将被耗尽! 1)top命令查看一下系统的cpu ram swap的使用情况 由上图分析,可以看出1--共有602个进程,但其中有601个进程休 ...
- codevs 2606 约数和问题
题目描述 Description Smart最近沉迷于对约数的研究中. 对于一个数X,函数f(X)表示X所有约数的和.例如:f(6)=1+2+3+6=12.对于一个X,Smart可以很快的算出f(X) ...
- CentOS VMware 下SSH配置方法详解
1.安装SSH[root@sample ~]# yum install ssh2.启动SSH[root@sample ~]# service sshd start3.设置开机运行[root@sampl ...
- [转]nodejs npm常用命令
FROM : http://www.cnblogs.com/linjiqin/p/3765772.html npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了n ...
- Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to th ...
- c语言 指针与地址的区别
指针由两部分组成,指针的类型和指针的值(也就是变量的地址). 指针和地址的区别: 地址只是一堆十六进制的字符,对应着内存条的某段内存, 而指针本身有地址,指针的值也是一个地址,指针本身还有类型,这与单 ...
- Word中的字体大小
Word中的字体大小(几号-几磅) Word对字体大小采用两种不同的度量单位,其中一种是以"号"为度量单位,如常用的"初号.小初.一号.小一--七号.八号" ...
- Webwork 学习之路【07】文件上传下载
Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大并发访问的交易网站.WebWork 当然也提供了很友好的拦截器来实现对文件的上传,让我们可以专注与业务逻辑的设计和实现,在实现上传和下载时顺 ...
- 走进 Spring IOC 的世界
转载出自:http://blog.csdn.net/m13666368773/article/details/7802126 1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的 ...
- 用c#操作Mongodb(附demo)
因为需要,写了一个基于泛型的helper,这样要使用起来方便一点. 为了大家也不重复造轮子,所以发出来希望能帮到谁. 复杂的查询最好用linq,这也是mongodb官方建议的. mongodb的C#配 ...