一、编译前环境准备
1. python 2.X
请不要使用python3,会报错。另外python2中推荐使用2.6或2.7版本,使用新的版本在编译其他google的工程时有时会报错,一开始用的2.4.3的版本,但是编译时后老报except importerror的错误,可能是语法不支持,后面装了2.6的版本后成功编译。同时在环境变量中添加python的安装目录路径,避免后面用命令窗口敲指令提示不是内部或外部命令。32位版本链接地址为:http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi。
安装完phython,在安装gyp环境时会提示setuptool没有安装,报ImportError: No module named setuptools的错误此时需要下载setuptool的对应版本并进行安装。在http://pypi.python.org/pypi/setuptools路径下下载自动化下载安装的脚本https://bootstrap.pypa.io/ez_setup.py,下载该脚本后运行python ez_setup.py
即可。脚本会自动判断python的版本,自动下载,安装。
2. gyp环境的按照
先去下载gyp,如果下载了googleBreakpad,则可以打开目录googleBreakpad\src\tools\gyp查看gyp目录中是否存在文件,不存在在https://github.com/svn2github/gyp中下载并将文件解压到gyp的目录下。然后在cmd中进入gyp的目录,输入setup.py install,完成GYP的安装。
2. Windows SDK 7
如果没有这个,编译会报错。另外这个是在线安装,时间很久,最好并行做其他的事情。
3. VS2005或者VS2008的补丁
二、使用python环境编译,生成windows工程文件
cd"源码目录/src/tools/gyp"
# 注意,此处不能使用全路径,不然会出错
gyp.bat --no-circular-check "../../client/windows/breakpad_client.gyp"
三、运行生成的工程文件,生成需要的链接库文件
找到上一步生成的解决方案 src/client/windows/breakpad_client.sln,用vs打开sln工程文件,直接编译生成就可以了。注意sln默认使用/MT(静态连接c运行时库),一般情况下需要改为/MD(动态连接c运行时库)。测试目录下的文件编译时会出现连接问题,将common.lib加入到连接选项就可以了。编译自己的工程文件时需要连接到的库为common.lib,exception_handler.lib,crash_generation_server.lib。
在编译过程中,用VS2008遇到下面的错误
“1>.\exception_handler.cc(568) : error C2065: “STATUS_INVALID_PARAMETER”: 未声明的标识符”
这个错误大概因为没有使用合适版本的 dbghelp.h,应该是windowssdk的版本不对应,vs2008用的是6.0的sdk库,如果是用vs2010以上的环境编译,是可以编译通过的。