libtorrent源码分析(二)VS上libtorrent编译总结

1. 简介

  libtorrent源码结构较为复杂而且内容极多,从微观开始一点点研究很容易迷失了方向,比较合适的方式是先跑测试代码,再逐步调试的过程中熟悉每个部分的源码,由此入手可以较为轻松。本文记录libtorrent在windows平台的编译经验。
  libtorrent依赖OpenSSL和boost库,首先要编译Openssl和boost库。在之前已经总结过openssl的编译,因此这里不做重复说明。

2. 编译Boost库

(1) 解压(例解压到:G:/)。

(2) 打开 Visual Studio 2017->Visual Studio tools ->VS2017 开发人员命令提示,cd 到boost解压后的根目录(例:G:/boost_1_68_0)。

(3) 执行G:/boost_1_68_0/tools/build下的booststrap.bat。完成后会在该目录下生成:b2.exe,bjam.exe,project-config.jam。将b2.exe和bjam.exe复制至boost_1_68_0目录下,用于编译。

(4) 使用bjam命令可以将release和debug一起编译生成:

bjam --toolset=msvc-14.1 --without-python --build-type=complete  link=shared  threading=multi install

3. 编译libtorrent库

  libtorrent是一个开源bt库,它将meta文件生成,hash生成,下载文件, 网络连接等操作封装成接口,供别人调用,并且都有很好的性能与稳定性。它大量使用了boost库的东西,并且还使用了openssl。
关于libtorrent的编译,这里提供两种方式,分别是在VS2017中添加源文件后编译静态库以及使用VS2017开发人员命令提示行编译。

  1. 使用VS2017命令行编译
    (1) 复制b2.exe和bjam.exe至libtorrent目录
    (2) 打开VS2017开发人员命令提示行,进入libtorrent所在目录
    (3) 设置依赖库boost的位置,如
    set BOOST_ROOT=G:/boost_1_68_0/;
    (4) 使用bjam编译
    bjam msvc-14.1 link=static runtime-link=static
    (5) 成功编译会在bin目录下生成libtorrent.lib
  2. 使用VS2017编译
    (1) 建立lib空项目
    (2) 将libtorrent中include/libtorrent, ed25519, src目录下(包括子文件夹)除了ed25519下的test.cpp以外所有源文件添加进来
    (3) 设置VC++的包含目录和库目录,包括OpenSSL、boost和libtorrent三个
    (4) 添加预处理器命令,包括:
    NDEBUG
    _LIB
    WIN32
    WIN32_LEAN_AND_MEAN
    _WIN32_WINNT=0x0500
    _CRT_SECURE_NO_DEPRECATE
    UNICODE
    BOOST_ASIO_HASH_MAP_BUCKETS=1021
    BOOST_FILESYSTEM_VERSION=2
    WITH_SHIPPED_GEOIP_H
    BOOST_ASIO_SEPARATE_COMPILATION
    BOOST_ASIO_ENABLE_CANCELIO
    TORRENT_USE_TOMMATH
    _WINSOCK_DEPRECATED_NO_WARNINGS
    _SCL_SECURE_NO_WARNINGS
    (5) 生成解决方案

4. 关于libtorrent的使用问题

在使用libtorrent的示例时,会需要和上文一样,添加VC++包含目录和库目录、预处理器命令,以及链接器的输入。
在使用example文件夹下的示例时,可能会遇到即使添加所有的lib之后依然报错缺少依赖项。若缺少的和boost::asio相关,则这种情况下可以通过手动在源文件开始时加入下面包含语句解决:
#include <boost/asio/impl/src.hpp>


欢迎关注本人公众号,公众号会更新一些不一样的内容,相信一定会有所收获。
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ch_ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值