您的位置:首页 > 其它

VS2010编译libtorrent

2015-06-30 08:43 309 查看
libtorrent依赖openssl和boost库;所以先要编译openssl和boost库:

1.编译openssl:

(1)安装ActivePerl,下载地址 

  安装完后配置环境变量;例如我安装的perl路径是G:\Perl;配置的环境变量是G:\Perl\bin;
(2) 编译openssl,先下载openssl的源码包,我下载的是1.0.0版本的。

运行visualstudio2010命令提示符工具,进到openssl的目录下,顺次运行命令
    perlconfigure VC-WIN32
    ms\do_ms
      nmake -f ms\ntdll.mak
(编译静态版本的执行 nmake -fms\nt.mak )
     编译完成后会在 E:\openssl-1.0.0-beta3\out32dll目录下生成库文件、动态链接库文件、Openssl执行
2.编译boost库:
有两种方案供选择:
(1)直接下载编译好的lib库;下载地址:http://sourceforge.net/projects/boost/files/boost-binaries/1.58.0/

其中msvc-x(是vs的版本号,这里用VS2010编译,故使用boost_1_58_0-msvc-10.0-32.exe这一版本;点击执行即可在安装目录下生成boost的lib库;而且是全库,包括静态的,动态的,单线程,多线程的,缺点是包很大;
(2)编译boost的源码;
a. 首先下载boost的源码;
b.生成boost的自用编译工具bjam.exe

解压后,使用VS2013编译。首先打开“VS2013 开发人员命令提示”,cd 到boost解压后的根目录:E:\XXX\boost_1_56_0,执行bootstrap.bat。会在boost根目录生成 b2.exe
、bjam.exe 、project-config.jam 、bootstrap.log四个文件。

其中,b2.exe 、bjam.exe 这两个exe作用是一样的,bjam.exe 是老版本,b2是bjam的升级版本。

c. 使用bjam来编译boost库;

b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:\eCode\boost_1_56_0\bin\vc12" link=static runtime-link=static threading=multi debug release

参数说明:

(1)stage/install:

stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(E:\SDK\boost\boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。

(2)toolset:

指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。

(3)without/with:

选择不编译/编译哪些库。因为python、mpi等库我都用不着,所以排除之。还有wave、graph、math、regex、test、program_options、serialization、signals这几个库编出的静态lib都非常大,所以不需要的也可以without掉。这可以根据各人需要进行选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org/下载安装。

查看boost包含库的命令是bjam --show-libraries

(4)stagedir/prefix:

stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2008对应的是E:\SDK\boost\bin\vc9,VC6对应的是E:\SDK\boost\bin\vc6,否则都生成到一个目录下面,难以管理。如果使用了install参数,那么还将生成头文件目录,vc9对应的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6类似(光这路径都这样累赘,还是使用stage好)。

(5)build-dir:

编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

(6)link:

生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

(7)runtime-link:

动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。

(8)threading:

单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

(9)debug/release:

编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

所以依据不同的参数组合可以编译出不同的库。编译生成的库我们可以根据其名字来判断生成的库的种类:

(1)以“lib”开头的是“link=static”版本(静态链接库版本,没有dll),而直接以“boost”开头的是“link=shared”版本(动态链接库版本,包含lib和dll)。

(2)所有的库都含有"boost"前缀。

(3)紧随其后的是boost库名称(比如date_time库)。

(4)然后是编译器的版本,与库名称之间以"-"而不是下划线"_"分隔(比如 -vc120)。

(5)有“mt”的为“threading=multi”版本,没有的则是“threading=single”版本。

(6)有“s”的为“runtime-link=static”版本,没有的则是“runtime-link=shared”版本。

(7)有“gd”的为debug版本,没有的则是release版本。

(8)所有的库都含有boost库的版本号结尾(比如1_56,其中的"."以下划线"_"代替)

参考:http://www.cnblogs.com/zhcncn/p/3950477.html
3.编译libtorrent
(1)在环境变量中配置bjam(boost的编译工具)的执行路径,
(2)下载libtorrent。我采用了0.15.6版本。官方下载地址:http://libtorrent.googlecode.com/files/libtorrent-rasterbar-0.15.6.tar.gz。需要注意的是,libtorrent有两个团队维护版本,我用的是http://www.rasterbar.com/prod ts/libtorrent/这里的版本。如果下载不了可以到sourceforge上下载:
http://sourceforge.net/projects/libtorrent/files/libtorrent/ 下载版本号中带rasterbar的版本我用的是rasterbar-1.0.5的版本。
(3)VS2010命令行窗口进入libtorrent的目录;
首先设置头文件和依赖库:
执行命令:
set BOOST_ROOT=BOOST的安装路径;
set INCLUDE=libtorrent的头文件目录;openssl的include目录;boost的头文件目录;
set LIB=openssl的库目录(out32dll文件夹);boost的库目录;
修改文件”boost安装路径\tools\build\v2\user-config.jam“ 添加一行:using msvc:10.0;
执行命令:<span style="font-size:14px;">bjam --toolset=msvc boost=source link=static runtime-link=static variant=debug character-set=unicode --without-python > builddebug.txt

</span>生成libtorrent的静态库;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: