最近在编译POCO库和BOOST库

先讲一下编译POCO库,我编译的是1.9.0,过程相当曲折,要OPENSSL修改版本的,个OPENSSL在这里下载,如果你用一般未修改的OPENSSL 是编译不了,会出现大量错的

https://github.com/pocoproject/openssl

编译好后还要下载一个MYSQL 开发版本,一般是ZIP包,300多M的,要注意,如果你要编译32位POCO,就要下载MYSQL 32位,如果编译64位POCO,就要64位的MYSQL

然后修改 buildwin.cmd

主要修改下面两个地方

rem Change OPENSSL_DIR to match your setup
set OPENSSL_DIR=D:\opensourcelibrary\CPP\openssl-develop\VS_150
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
set OPENSSL_LIB=%OPENSSL_DIR%\win32\lib\debug;%OPENSSL_DIR%\win32\lib\release;%OPENSSL_DIR%\win32\bin\debug;%OPENSSL_DIR%\win32\bin\release;
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
set LIB=%LIB%;%OPENSSL_LIB%
rem Change MYSQL_DIR to match your setup
set MYSQL_DIR=D:\mysql
set MYSQL_INCLUDE=%MYSQL_DIR%\include
set MYSQL_LIB=%MYSQL_DIR%\lib\;%MYSQL_DIR%\lib\debug
set INCLUDE=%INCLUDE%;%MYSQL_INCLUDE%
set LIB=%LIB%;%MYSQL_LIB%
 
修改完按照自己的VS版本进行执行,比如我是VS 2017 是 VC 150 版本,我就执行build_vs150.cmd,如无意外就编译成功
 
再讲一下编译boost 库,要编译winXP可以用的,我就这样做
 
先下载一个boost_1_68_0.zip
然后解压
 
然后再执行如下
注意,我测试过,好像VS2015或者以上的版本都不能编译XP下面可以用的版本,测试过在VS2013正常地编译了一份XP下面可以用的BOOST库
执行前要先执行这几条语句
set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
 
网上有说还要执行以下
set CL=/D_USING_V110_SDK71_;%CL%
set LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%
 
但我试过,执行以后执行bootstrap.bat会出错的,不建议执行上面两条语句
出错会如下
 

d:\boost_1_68_0\tools\build\src\engine>if exist bootstrap rd /S /Q bootstrap

d:\boost_1_68_0\tools\build\src\engine>md bootstrap

d:\boost_1_68_0\tools\build\src\engine>cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c
command.c
cl : Command line error D8038 : invalid argument '_USING_V120_SDK71_;%CL%'

d:\boost_1_68_0\tools\build\src\engine>exit /b 2

d:\boost_1_68_0\tools\build\src\engine>if exist bootstrap rd /S /Q bootstrap

d:\boost_1_68_0\tools\build\src\engine>md bootstrap

d:\boost_1_68_0\tools\build\src\engine>cl /nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0 command.c compile.c constants.c debug.c execcmd.c execnt.c filent.c frames.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathnt.c pathsys.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c md5.c class.c cwd.c w32_getreg.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c
command.c
cl : Command line error D8038 : invalid argument '_USING_V120_SDK71_;%CL%'

d:\boost_1_68_0\tools\build\src\engine>exit /b 2

 
 
接着执行bootstrap.bat
 
D:\opensourcelibrary\CPP\boost_1_68_0>bootstrap.bat 

Building Boost.Build engine
Bootstrapping is done. To build, run:
.\b2
To adjust configuration, edit 'project-config.jam'.
Further information:
- Command line help:
.\b2 --help
- Getting started guide:
http://boost.org/more/getting_started/windows.html - Boost.Build documentation:
http://www.boost.org/build/doc/html/index.html
D:\opensourcelibrary\CPP\boost_1_68_0>

如果你是VS2013 并且想编译WINDOWS XP下面可以用的32位库,运行下面语句
b2.exe toolset=msvc-12.0_xp link=static runtime-link=static,shared --build-dir=build/x86 address-model=32 -j5 install --includedir=D:\opensourcelibrary\CPP\boost_1_68_0\win32\include --libdir=D:\opensourcelibrary\CPP\boost_1_68_0\win32\lib\x86 define=BOOST_USE_WINAPI_VERSION=0x0501
最后的 define=BOOST_USE_WINAPI_VERSION=0x0501 是指明XP下面也可以用的,如果你不需要XP也可以把那个参数删除,默认是WIN7的
如果你是编译 32位,编译个WIN7下面的库,这里是VS 2017为例子,因为是ms-vc 14.1版本,根据自己的VS版本填入适当的参数,我这里用了b2的命令,网上也有用bjam的,等下再讲
 
b2.exe toolset=msvc-14.1 link=static runtime-link=static,shared --build-dir=build/x86 address-model=32 -j5 install --includedir=D:\opensourcelibrary\CPP\boost_1_68_0\win32\include --libdir=D:\opensourcelibrary\CPP\boost_1_68_0\win32\lib\x86 

如果你是编译64位,这个命令
b2.exe toolset=msvc-14.1 link=static runtime-link=static,shared --build-dir=build/x64 address-model=64 -j5 install --includedir=d:\opensourcelibrary\CPP\boost_1_68_0\win64\include --libdir=d:\opensourcelibrary\CPP\boost_1_68_0\win64\lib\x64

最近编译POCO 库和 Boost库的笔记的更多相关文章

  1. 使用VS2015 编译 64位的boost库

    别人写的编译参考: 目标:使用VS2015 编译 64位的boost库. 一直以来都是在Win32环境下Build和使用boost,但现在基本上每天都在64位Win7下工作,所以很有必要把这几天的经验 ...

  2. 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)

    就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...

  3. windows下编译Android版本的boost库文件

    1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了( ...

  4. 《超越C++标准库:Boost库导引》:序

    序(Foreword) C++社区正在发生着一些美妙的事情.尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用.不信么?容我慢慢道来. 当前版本的标准C++是在1998年最终确定 ...

  5. 简单编写makefile文件,实现GCC4.9编译项目,增加boost库測试等等。。

    一.须要用到的hw.cpp hw.h funtest.cpp funtest.h makefile 几个測试文件 1.hw.cpp代码例如以下: #include "hw.h" # ...

  6. boost库在windows下的编译和使用

    因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boos ...

  7. Boost库编译安装

    一.Boost库介绍         Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库工作组成员发起,其 ...

  8. boost库生成文件命名和编译

    生成文件命名规则:boost中有许多库,有的库需要编译.而有的库不需要编译,只需包含头文件就可以使用.编译生成的文件名字普遍较长,同一个库根据编译链接选项不同,又可以生成多个不同名字的文件.生成的文件 ...

  9. 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位),超详细,boost于vs2017下编译(64/32bit)

    首先下载得到boost的最新版(目前最新版是1.63) 下载地址: http://www.boost.org   也可以从这里直接下载 http://download.csdn.net/detail/ ...

随机推荐

  1. ACboy needs your help HDU - 1712

    ACboy needs your help HDU - 1712 ans[i][j]表示前i门课共花j时间最大收益.对于第i门课,可以花k(0<=k<=j)时间,那么之前i-1门课共花j- ...

  2. 题解报告:hdu 1406 完数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1406 Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的 ...

  3. synchronized(1)用法简介:修饰方法,修饰语句块

    注意: 同一个对象或方法在不同线程中才出现同步问题,不同对象在不同线程互相不干扰. synchronized方法有2种用法:修饰方法,修饰语句块 1.synchronized方法 是某个对象实例内,s ...

  4. ORACLE 如何查看存储过程的定义

    ORACLE 如何查看存储过程的定义   相关的数据字典 USER_SOURCE 用户的存储过程.函数的源代码字典 DBA_SOURCE 整个系统所有用户的存储过程.函数的源代码字典 ALL_SOUR ...

  5. 211 Add and Search Word - Data structure design 添加与搜索单词 - 数据结构设计

    设计一个支持以下两个操作的数据结构:void addWord(word)bool search(word)search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z . ...

  6. scala学习笔记4:函数和闭包

    以下主要记录的是看完scala in programming这本书functions and closures(第八章)后的要点总结. 1,函数可以存在的地方:函数方法,嵌套函数. 2,关于funct ...

  7. c#拖拽文件

    在“属性”窗口中,先设置MDI的父窗口的AllowDrop 属性更改为true;2.在父窗口的事件中添加下面两个事件 private void Form1_DragEnter(object sende ...

  8. CSS定位内容

    div.h1 或 p 元素常常被称为块级元素.这意味着这些元素显示为    一块内容,即“块框”.与之相反,span 和 strong 等元素称为“行    内元素”,这是因为它们的内容显示在行中,即 ...

  9. 本地连接批处理修改IP

    例子: 本地连接修改IP netsh interface ip delete dns "本地连接" addr=allnetsh interface ip add dns " ...

  10. IOS 面试题系列

    随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1.   Ob ...