vs2010 编译linux,VS2010 Boost编译安装

2.解压缩到D:\boost 目录下

3.编译bjam

(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)”

(2)cd到D:\boost\boost_1_46_0下执行bootstrap.bat,然后,会在D:\boost\boost_1_46_0\下生成bjam.exe

4.设定编译环境(如果想去掉编译警告需要修改)

修改user-config.jam (D:\boost\boost_1_46_0\tools\build\v2\user-config.jam) 的MSVC configuration# MSVC configuration

# Configure msvc (default version, searched for in standard locations and PATH).

# using msvc ;

using msvc : 10.0 : : /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 ;

5.將目录cd到D:\boost\boost_1_46_0\下执行(1) 编译boost库

bjam stage --without-Python --toolset=msvc-10.0 --build-type=complete --stagedir="D:\boost\boost_1_46_0\bin\vc10" (这一步需要等待很长时间,大概一个小时左右……)

下面详细解释一下每个参数的含义:

stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。

toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。

without/with:选择不编译/编译哪些库。

stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2010对应的是D:\boost\boost_1_46_0\bin\vc10,否则都生成到一个目录下面,难以管理。

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

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

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

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

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

运行完后(弹出输入提示符)

6.设定vs2010环境。(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )

修改环境变量:$(BOOST): D:\boost\boost_1_46_0

Tools -> Options -> Projects and Solutions -> VC++ Directories

在Library files加上$(BOOST)\bin\vc10\lib

在Include files加上$(BOOST)

使用举例:

#include

此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:

#define BOOST_ALL_DYN_LINK

同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:

#define BOOST_ALL_NO_LIB

然后使用以下方法链接:

#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

#pragma comment(lib, "boost_thread-vc100-mt.lib")

这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:

#define BOOST_LIB_DIAGNOSTIC

它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。

关于boost的auto-link机制,详细可以看看boost\config\auto_link.hpp里的代码,很容易可以读懂,并且值得我们学习。

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode笔记】200. 岛屿数量(Java、DFS)

文章目录题目描述代码 & 思路更新代码题目描述 直接毁岛!每次发现一个岛,ans,然后直接把整个岛毁了(感染)直到最后,找出所有岛,此时地图上全都是’0’ 代码 & 思路 每次找到一个岛&…

linux统计代码注释率,统计代码注释率

#!/bin/bash#program:# 分析.c,.cpp文件,计算文件行总数,代码行总数,注释行总数,空白行总数,代码注释率# 注释类型:# (1)行注释"//这里是注释内容"# (2)块注释"/*这里是注释内…

【LeetCode笔记】155. 最小栈(Java、栈)

文章目录题目描述思路 & 代码更新版题目描述 用空间换时间的经典例子,唯一要解决的地方就是 getMin() 如何实现常数检索(貌似也是面试常考题) 思路 & 代码 既然想快,那就要付出空间的代价用什么空间可以实现&#xff…

linux win7 默认启动,请教:我的grub.cfg里面的内容如下,请教怎样改代码才能让WIN7设为默认启动...

请教:我的grub.cfg里面的内容如下,请教怎样改代码才能让WIN7设为默认启动发布时间:2011-09-24 15:43:24来源:红联作者:baiguanglin## DO NOT EDIT THIS FILE## It is automatically generated by grub-mkconfig using templates# from /etc/grub.d and s…

【LeetCode笔记】198. 打家劫舍(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 好家伙,真是一道不符合社会主义价值观的题目不过我们还是要把这道题做了,而且还得用上动态规划 思路 & 代码 首先,不能打劫相邻然后,房屋都是非负整数(讲道理&…

【LeetCode笔记】617. 合并二叉树(Java、DFS、二叉树)

文章目录题目描述思路 & 代码更新版题目描述 貌似是面试高频题,显而易见的递归。 思路 & 代码 合并两棵树,先不考虑特殊情况,可以理解成:根结点合并,然后各自的左右子树继续进行合并操作。那么递归返回值肯…

linux 重定向 不换行,Ada:重定向到stdout时省略换行符(测试Put)

我正在尝试用简单的方法编写测试Ada.Text_IO.Put.为简单起见,这是一个我想测试的组合方法:procedure Say_Something isbeginPut("Something.");end Say_Something;在我的AUnit测试中,我有:procedure Test_Put (T : in out Test) ispragma Unreferenced (T);use Ada.T…

【LeetCode笔记】226. 翻转二叉树(Java、递归)

文章目录题目描述代码 & 思路更新版题目描述 感觉和合并二叉树类似,都是很好进行递归的问题 代码 & 思路 翻转当前结点的左、右结点对当前结点的左、右结点进行翻转函数【自底向上】 /*** Definition for a binary tree node.* public class TreeNode …

virtualbox linux 分辨率,终于搞定了VirtualBox的ubuntu分辨率问题

曾经装了ubuntu,但是觉得和windows切换太麻烦了,要重启机器,导致的结果是linux装上了总是不用。这次决定使用虚拟机,因为我用ubuntu就是ssh一下实验室的服务器,所以对性能没什么要求。在所里的时候看到祝师兄总用vmwar…

【LeetCode笔记】160. 相交链表(Java、链表)

文章目录题目描述思路 & 代码题目描述 感谢这道题,让我更加了解到Dalao们思路的nb主要是满足空间复杂度O(1)。否则用哈希表不难实现。 思路 & 代码 有相交结点的情况下,可以找到这么一个等式: // 假设链表长度为m,n&…

linux 离线安装nfs,ubuntu 上离线安装包制作与安装之NFS搭建

在Ubuntu上离线搭建NFS服务器一、制作离线软件包在联网且环境与你相同的电脑上 制作离线软件包注:先查看有没有安装nfs-utils的安装包 命令:# rpm -q nfs-utils1、下载软件所需deb包#sudo apt-get install nfs-kernel-server下载后安装包在/var/cache/ap…

【LeetCode笔记】152. 乘积最大子数组(Java、动态规划)

文章目录题目描述思路 & 代码更新版题目描述 考虑正数、负数和0的情况 思路 & 代码 既然是使用的动态规划,那么有以下几点: 维护什么:维护iMax和iMin,分别代表包含当前值的子数组的最大乘积 & 最小乘积什么时候转…

Linux安装winetim简单教程,[转载]wine安装最新版TIM

[版权声明:本文为转载,并按照个人实际操作步骤替换为了TIM安装,原文为QQ安装过程。]1. 安装wine本次教程只需要安装最新版本的wine,并不需要winetricks、wine-mono、wine-gecko等其他插件,目前经实际测试发现只运行Win…

【LeetCode笔记】283. 移动零(Java)

文章目录题目描述思路 & 代码更新版题目描述 原地操作 & 减少操作次数:不能直接只拷非零数,也不要每次都一个个推动整个数组 思路 & 代码 维护一个noZeroNums,代表当前循环遇到的非0数的数量第一趟先不管0的数量,…

c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#

最近,我被要求实现一个类作为选择过程的一部分。我按要求做了这个节目。但是,我考试不及格。我真的很想知道我的解决方案出了什么问题。任何帮助都非常感谢。问题和我的解决方案如下实现一个线程安全类,该类在构造过程中每秒触发一个事件。需要有一个函数来查找经过的秒数。这个…

【LeetCode笔记】448. 找到所有不存在的数(Java、原地)

文章目录题目描述思路 & 代码题目描述 说实话,第一眼看题让我想到那道“往1 ~ 1024中加入一个数,用中学生也会的方法找到这个数"(答案是 (1024! x) - 1024! )如果没有时空复杂度限制的话,用哈希…

c语言中标识符和关键字,C语言(三) C 标识符和关键字

一.标识符1.标识符的作用:C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称2.标识符的规范:一个标识符只能以字母 A-Z 或 a-z 或下划线 _ 开始 后跟零个或多个字母、下划线和数字(0-9),第二位开始也只能用 A-Z…

【LeetCode笔记】146. LRU缓存机制(Java、双向链表、哈希表)

文章目录题目描述思路 & 代码LinkedHashMap 的写法题目描述 大名鼎鼎的超高频面试题太感动,在这道题上花了太多时间了,今天终于补上博客了TvT 思路 & 代码 结构用的是:双向链表 哈希表。可以满足O(1)时间复杂度put()&#xff1a…

c语言random函数在vc,C++ 中随机函数random函数的使用方法

C 中随机函数random函数的使用方法一、random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。 可改用C下的rand函数来实现。1、C标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。…

计算思维c语言软件,C语言编程入门与计算思维

课程概况This specialization is designed to let you explore computational thinking and beginning C programming topics, applying those concepts to develop solutions to a variety of practical problems.The first course assumes no programming experience, and th…