当前位置:首页 » 编程软件 » boost156编译

boost156编译

发布时间: 2023-09-10 14:10:03

A. 如何编译libboost

您好,这样的:
1、当前boost最新版本为1.55,下载地址http://sourceforge.net/projects/boost/files/boost/1.55.0/
或者从官网(www.boost.org)下载最新版的BOOST源码,经过测试,2012和2013步骤相同,这里以2012为例。
2、打开VS2012 Native Tools Command,可以从开始--Microsoft Visual Studio 2012找到:将下载的 boost_1_55_0.zip 解压在F盘,例如 F:\boost_1_53_0,执行bootstrap.bat。
3、编译,可以简单的使用b2 install,也可以指定存放目录,或者寻找网上其它帮助文章。
查看帮助可以输入:.\b2 --help
比如要开启多线程编译:b2 install threading=multi
设置生成的是debug或者release
备注:如果是使用VS2013,请指定输出库类型,否则会缺一个lib文件:
"无法打开文件 libboost_thread_vc120_mt_sgd-1_55.lib"。
在2013时,我是使用下面的语句进行编译:
// 如果要获取动态库:
bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=shared runtime-link=shared threading=multi debug release
// 如果是要获取静态库:

bjam install stage --toolset=msvc-12.0 --stagedir="C:\Boost\boost_vc_120" link=static runtime-link=static threading=multi debug release

其中,注意修改--toolset=msvc-12.0,将12.0修改成对应的vs版本号,12.0是VS2013的版本号。

目标地址也要修改成你所需的。

注意,不要漏了install,它会帮你把头文件集合到一个文件夹中。
编译过程有一个复制过程,编译需要的时间比较长,本次编译过程中,会在C盘根目录下生成一个boost文件夹,然后包含include和lib文件夹,这就是我们将要使用的头文件和库文件。

4、编译完了我们就使用编译在C盘中的文件。我将它们拷贝到了F盘,
需要简单的配置两个地方:这里使用绝对路径,也可以配置环境来使用。
5、然后建立了一个工程测试。 在BoostTest中新建一个控制台应用程序,下图三个文件分别是:
1) 将要使用的boost头文件和库文件。 2) 解压出的boost文件夹,就是使用这个文件夹来进行 1 -- 3步骤的。 3)BoostTest 测试工程。
#include <iostream>

#include <boost/thread/thread.hpp>
void hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}
int main()
{
boost::thread thrd(&hello);
thrd.join();
}
编译测试工程, 并运行,开始boost之旅吧。

B. 安装了多个版本vs怎么编译boost

boost有些库是不用安装的,仅需包含头文件库就行了。
但是有些很爽的库(thread,regex)需要根据不同的系统做不同的调整,所以必须编译。
编译的流程很简单,如果是windows操作系统,首先找到那个booststrap.bat的东西,然后在控制台下运行它,它会生成bjam.exe,然后就可以通过bjam来编译boost库了,在命令行下输入bjam --help看选项。

如果嫌麻烦,可以一次将boost库需要编译的全部编译了,bjam --build-type=complete,生成库全在stage目录下。

C. linux下G++怎么编译使用Boost库的程序

首先把Boost库的头文件存放到/usr/include/boost/路径下,再把Lib文件存放到/usr/local/lib/boost/路径下。修改/etc/profile文件,在此文件中增加如下2个环境变量:

BOOST_INCLUDE=/usr/include/boost
export BOOST_INCLUDE

BOOST_LIB=/usr/local/lib/boost
export BOOST_LIB

写一个如下所示的cpp文件。
//samlpe.cpp
#include <iostream>
#include <string>
#include <boost/thread.hpp>

using namespace std;

void threadRoutine(void)
{
boost::xtime time;
time.nsec = 0;
time.sec = 20;
cout << "线程函数做一些事情" << endl;
boost::thread::sleep(time);
}

int main(void)
{
string str;
cout << "输入任意字符开始创建一个线程..." << endl;
cin >> str;
boost::thread t(&threadRoutine);
t.join();
cout << "输入任意字符结束运行..." << endl;
cin >> str;
return 0;
}

保存。使用g++编译,命令如下所示:

g++ -o samlpe.out samlpe.cpp -I$BOOST_INCLUDE -L$BOOST_LIB -lboost_thread-gcc-mt

其中-I参数指定Boost头文件路径,-L参数指定Boost库文件路径,-l参数指定使用线程库名。在我使用的这个版本Boost里,到/usr /local/lib/boost路径下,可以看到有关Boost线程库文件,比如:libboost_thread-gcc-mt.a等。注意在用-l 参数指定库名时把磁盘文件名前面那个lib前缀去掉就可以了。

D. windows下boost怎样安装与使用说明

一、 下载boost

boost_1_51_0.zip 下载并解压到C盘根文件夹
二、编译boost
1、生成生命行程序
执行bootstrap.bat
2、编译
执行b2.exe,完成后显示:
The Boost C++ Libraries were successfully built!
The following directory should be added to compiler include paths:
C:/boost_1_51_0
The following directory should be added to linker library paths:
C:\boost_1_51_0\stage\lib
三、使用boost
1、创建一个win32 console
2、引用bootst
C/C++ -> Additional Include Directories: C:\boost_1_51_0
Linker-> Additional Library Directories: C:\boost_1_51_0\stage\lib
Linker->Input->Additional Dependencies :libboost_signals-vc110-mt-gd-1_51.lib;libboost_regex-vc110-mt-gd-1_51.lib;
3、Code如下:

#include "stdafx.h"
#include <boost/regex.hpp>
#include <boost/signals.hpp>
#include <boost/lambda/lambda.hpp>

#include <iostream>
#include <cassert>

struct print_sum {
void operator()(int x, int y) const { std::cout << x+y << std::endl; }
};

struct print_proct {

void operator()(int x, int y) const { std::cout << x*y << std::endl; }

};

int _tmain(int argc, _TCHAR* argv[])
{
boost::signal2<void, int, int, boost::last_value<void>, std::string> sig;
sig.connect(print_sum());
sig.connect(print_proct());
sig(3, 5);
std::string line;
boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );
while (std::cin)
{
std::getline(std::cin, line);
boost::smatch matches;
if (boost::regex_match(line, matches, pat))
std::cout << matches[2] << std::endl;
}
return 0;
}


示例程序在vs2012下通过,输出:
8
15

E. 怎么在ubuntu上安装boost1.58

安装好ubuntu14.04之后,下载boost、qt、osg的库,进行编译

1.boost

参考http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html

boost提取出来以后,先./configure,生成b2

这里b2好像就是对应1.40以前的bjam,都是boost自己的编译程序。

再执行./b2 link=static runtime-link=static variant=debug,release
layout=versioned stage --stagedir="/home/username/boost_1_58_0/bin/gcc"
threading=multi

这个命令是个大概的格式,具体可能有些拼写符号有误,主要就多说几点。一个是link和runtime-link,link是在编译期间,是选择
static还是shared,如果是static,那么boost库在编译完成后,会绑入输出的程序,如果是shared,那么需要放在代码目录下,供
引用。runtime-link则是在程序发布之后,如果启动运行,调用boost库的方式,如果选择shared,那么不但需要把编译输出的文件给客
户,还要给他一堆依赖的动态链接库。

variant是以什么方式输出,如果既想要debug 又想要release,那么就用逗号连接。

但是,如果同时输出debug,release,会产生命名冲突,必须指定layout=versioned,这样debug和release出来的库的名字才不会冲突。

stage编译的话,编译完成后,所有的库文件都会被输入指定的stagedir里面,而include文件本身就在boost_1_58_0下面
的boost文件夹中。不需要再执行make
install,install的作用会把所有生成的库拷入/usr/local/lib里面,/boost_1_58_0/boost也会拷入/usr
/local/include 里面,有点多余

但是stage方式编译的话,在每次生成依赖boost库的程序的时候,需要用-I在指定inlucde路径。可以通过在环境变量文件里面指定环境
变量,然后g++编译的时候,指定这个环境变量。关于环境变量参考了这篇:http://blog.csdn.net/tigerjibo
/article/details/8513365

比如我有一个调用boost库的代码文件hboost.c,在/home/username/.profile文件里面指定了
BOOST_ROOT,重启生效。编译的时候 执行 g++ -I$BOOST_ROOT hboost.c -o
hboost,就可以输出编译结果,再运行./hboost就可以看到程序运行的结果了。

2.qt

qt其实比较简单,直接进入解压到目录,./congfigure;make;make install三个步骤就可以了。不过由于我要用osg 利用qt的库编译osgQT所以这里有个坑。

首先,为什么选择QT4.8,这是因为它是QT5.0以下的最新版。为什么不用QT5呢,因为据osgChina里面的大牛说,好像QT5在osg
里面进行多线程方面有bug。具体参考这些帖子,http://bbs.osgchina.org/forum.php?mod=viewthread&
amp;tid=13908&highlight=qt5

http://bbs.osgchina.org/forum.php?mod=viewthread&tid=12703&highlight=qt5

其次,为了最后能生成osgQT,需要编译QT的GLWidget等相关类,所以需要在本机上安装opengl。开始的时候参考这篇文章
http://www.wikihow.com/Install-Mesa-(OpenGL)-on-Linux-Mint.但运行命令的时候总是告诉我
依赖有问题。于是看到有人说需要更新源(http://forum.ubuntu.org.cn/viewtopic.php?f=48&
t=468366),就又找到了这篇文章http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1
%A8#Trusty.2814.04.29.E7.89.88.E6.9C.AC。这下就全都妥了。

然后进入qt解压目录,做./configure -static -debug-and-release -no-sql-sqlite
-no-sql-sqlite2 -no-sql-sqlite_symbian
-opengl生成静态库。注意,那几个no-sql的选项,如果不带的话,会在下一步make的时候,报
qt_plugin_instance_qsqlite
unresolve之类的错误(http://www.qtcentre.org/threads/25304-making-qt-libs-as-
static-problem-under-Linux(ubuntu))。-opengl选项,会让configure自动去默认路径寻找opengl
相关的依赖,如果你的opengl安装的位置不对,他会要求你自己指定其他的位置。

3.osg

osg默认是用cmake来编译的,所以应该先用apt-get把cmake
cmake-gui搞下来。在编译的过程中发现,如果本机的依赖库有问题,有可能会导致编译或者链接失败。一个比较偷懒的办法提供给大家。首先,请先更新
你linux的源,之后apt-get build-dep
openscenegraph,这个命令在我这里下载了几十兆的依赖库。然后进入到osg的解压目录,然后把makefile.txt拖进gui,点击
configure,勾选group、advanced。如果要编译Debug那么先把cmake组里面的参数build
type(似乎是这个选项)写Debug,build组里面的compile
example勾选。然后再点击一次configure,再点generate。理论上依赖库应该是没问题的,因为我们apt-get了那么多依赖库对
吧。

然后终端里make,如果报错,如果报错是和某个依赖库有关的,那么就重新打开cmake-gui,把那个依赖库选项下的include、library全部删掉,再重新生成,然后再重新make。如此反复,最终一定会生成一份可用的osg。

当然也可以不下载依赖库,直接把QT和opengl在默认路径下准备好,如果这样的话其实更简单,直接终端里面运行./configure就行了,
自动会以release方式cmake出makefile,如果想要Debug方式,那就改一下configure文件。然后make,一般不会有问题。

make结束之后,所有生成的文件会位于解压文件夹里的bin、lib、inlcude里,把这些拷贝出来,放到另外一个文件夹比如build,然
后把下载到的data文件夹,里面包括那个牛、滑翔机和卡车等等经典的模型,也放到这个build里面,设置一下环境变量,osg应该就可以用了。

设置有关环境变量的问题,需要设置两个或者三个环境变量。如果在执行完make之后,再执行make
install,那么只需要设置OSG_FILE_PATH指定data文件夹的位置,并在PATH中指定bin文件夹的位置(这样可以运行
osgersion,osgiewer这些编译时附送的应用)。make
install会把include和lib文件夹拷入usr/local下的include、lib文件夹。但是如果没有执行make
install,那么需要设置第三个环境变量,那就是LD_LIBRARY_PATH,我的分发版是ubuntu
14.04,sudo gedit /etc/environment打开配置文件,添加export
LD_LIRARY_PATH=$LD_LIBRARYPATH:path to lib然后在终端里执行source
/etc/environment。这样做是因为在执行osgiewer的时候,如果要读入cow.osg文件,osg需要lib文件夹下的plugIn
文件夹里的插件来读取对应格式的文件。由于我我们没有执行make install所以就需要告诉osg,这个lib文件夹到底在哪里

http://stackoverflow.com/questions/14012021/osgviewer-cow-does-not-view-a-cow

http://forum.openscenegraph.org/viewtopic.php?t=11021

不得不说,我的osg生成的还是有问题,freetype总是用不了,字体显示上有些蛋疼。后来很仔细的把cmake里面的有关freetype的
地址都指定了,也输出osgdb_freetype.so了,但使用的时候还是出现undefined
symbol错误。先不打算搞了,起码现在主要功能都能用,字体的事先放一放。
http://blog.csdn.net/solofly752/article/details/45481137

F. windows boost 32位怎么编译

方法1.运行脚本vsvars32.bat:
D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat
这个批处理 主要就是在运行CMD的时候先为我们设置一下环境变量(临时的) (这个脚本中写入的是bin, lib,include , tools的路径信息,也可以自己配置)

方法2.设置系统环境变量:
电脑右键属性-->高级环境变量-->系统环境变量选择PATH 编辑,将以下内容复制追加:
;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcpackages;C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\Windows\Microsoft.NET\Framework64\v3.5;C:\Windows\Microsoft
环境变量生效可能需要重启计算机。

G. 新人求教 驱动源码编译安装

1、安装scons
(1) 下载python2.7, 使用x86_32位,因为scons只有32位安装包可用;
(2) 下载scons2.3.0;
(3) 安装python 和 scons, 将C:\Python27\Scripts写入PATH;
(4) 下载安装pywin32 ,It is recommended you install pywin32 if you want to do parallel builds (scons -j)

2、安装boost库(1.49版本).
解压后双击bootstrap.bat,生成bjam.exe后,cd到目录c:\boost下,(将boost_1_49更名为boost了)编译boost。
编译命令:C:\boost>bjam variant=release --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
这是使用VS2010环境编译的release版本,编译完成后,生成C:\boost\stage\lib文件夹,下面有6个lib库:

如果要编译成debug版本,使用命令:bjam variant=debug --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32

编译完成后,生成C:\boost\stage\lib文件夹,下面有10个lib库和dll:

此处为MongoDB文档中对于编译boost库的要求原文:
When using bjam, MongoDB expects
variant=debug for debug builds, and variant=release for release builds
threading=multi
link=static runtime-link=static for release builds
address-model=64 for 64 bit(64位的话,把32换为64)。link=static runtime-link=static,boost需要编译成静态库,因为mongodb只会去链接boost的静态库
address-model=64在win7 64环境下此项必须,不加在编译mongodb的c++ client时会出现链接错误。

3、下载mongo2.4.6源码 http://www.mongodb.org/downloads官网下载
编译Mongoclient.lib

cmd命令提示符下,cd到解压后的文件目录,例如我放在了E盘,E:\mongodb-src-r2.4.6,输入命令:
scons –-dd --32 mongoclient.lib // build C++ client driver library
Add --64 or --32 to get the 64- and 32-bit versions, respectively. Replace --release with --dd to build a debug build.
编译后在mongodb\build\win32\32\dd\client_build\生成mongoclient.lib.

4、测试程序
就用Mongodb自带的例子吧,使用VS2010打开E:\mongodb-src-r2.4.6\src\mongo\client\examples中的simple_client_demo.vcxproj,编译,会提示生成simple_client_demo.sln,保存。
使用debug模式,配置工程环境:打开工程->属性,配置Configuration Properties下的VC++ Directories,头文件路径添加C:\boost,Lib库路径添加boost的lib,以及mongodb client的lib:
C:\boost\stage\lib

E:\mongodb-src-r2.4.6\build\win32\32\dd\client_build
进入C/C++下面的Code Generation,将Runtime Library设置为Multi-threaded Debug (/MTd)
进入Linker下面的Input,设置Additional Dependencies,添加ws2_32.lib,psapi.lib,Dbghelp.lib,mongoclient.lib
将E:\mongodb-src-r2.4.6\build\win32\32\dd\mongo\base下生成的error_codes.h和error_codes.cpp文件,拷贝到E:\mongodb-src-r2.4.6\src\mongo\base目录下。
ok,编译、运行.

5、问题解决
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(dbclient.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(assert_util.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(jsobj.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(status.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(mutexdebugger.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj

VS的版本不匹配,lib是在更高级的版本中编译生成的,而使用的时候,是在低级版本中使用的,所以出现了不匹配的错误。例如,我在VS2010 SP1和VS2012的环境下编译的,而使用是在VS2010上使用,所以在编译时,出现了以上问题。

1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymGetMoleInfo64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr

在工程依赖库中添加Dbghelp.lib

其它问题,看看你手头的编译器、编译出来的boost库版本、mongoclient.lib的版本,是否对应好了。

H. 如何在XCode中配置Boost库

话说boost在xcode5上的安装确实很费劲,参考实验了相当数量的文章后,终于成功在IOS模拟器上跑通了boost库,废话少说,上步骤

1. 下载boost.sh安装脚本,这里选择的是payco的安装脚本,https://gist.github.com/payco/6880661 ,最简单好用。也可以在csdn上我的代码中下载,https://code.csdn.net/snippets/68017.git
2. 打开终端,su成root,命令为 sudo su,输入密码即可
3. 清理掉所有之前安装的配置,尤其是在用户目录下的user-config.jam,必须删除掉,之前安装的文件也一并删除掉,免得影响。(本人就是没清理之前的配置,导致一直编译不通过)
4. 把boost.sh 拷贝到/usr/local 下,运行之,会自动下载,解压,配置,编译boost。
5. 等待编译安装完毕后,显示 Completed successfully,boost库即安装完毕

完成了一半,剩余的工作就是配置xcode5,其他版本的xcode也是大同小异,没有什么区别的。
6. 在xcode下的target-》Building setting-> Linking-> Other Linker Flags中,添加 -lboost_system -lboost_thread,这两项(常用的功能都包含在这2个库中,还有其他要使用的功能,都在这里添加库文件)

7. 在在xcode下的target-》Building setting->Search Path s 中,Header Search Path 添加/usr/local/ios/prefix/include
8. 在在xcode下的target-》Building setting->Search Paths 中,Library Search Path 添加/usr/local/ios/prefix/lib(这是给真机用的,包含arm6,arm7,arm7s等),以及/usr/local/ios/build/i386(这是给模拟器用的),基本都在一个位置上,截取一张图好了

添加完毕之后,测试一下编译是否成功。
在任意一个cpp文件内,添加
#include "boost/swap.hpp"
#include "boost/asio.hpp"

编译无报错,则顺利完成boost库在xcode5下的IOS使用编译:)

热点内容
java编程试题 发布:2024-11-19 17:26:37 浏览:664
python显示二进制文件 发布:2024-11-19 17:26:36 浏览:147
excel中编程 发布:2024-11-19 17:23:32 浏览:549
android透明图片 发布:2024-11-19 17:01:50 浏览:163
iis上传文件限制 发布:2024-11-19 16:37:55 浏览:407
面试题算法 发布:2024-11-19 16:30:25 浏览:547
oracle存储过程debug 发布:2024-11-19 16:30:25 浏览:234
linuxshjava 发布:2024-11-19 16:29:49 浏览:600
小程序saas平台源码 发布:2024-11-19 16:27:16 浏览:839
汽车五门怎么看配置 发布:2024-11-19 16:26:27 浏览:795