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’ 代码 & 思路 每次找到一个岛&…

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

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

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

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

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

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

【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&…

【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的数量,…

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

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

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

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

simulink和c语言开发,Simulink之嵌入式C代码生成-应用层和底层的接口

今天给大家带来的仍然是基于MBD的嵌入式代码生成,主要把应用层和底层接口之间的代码生成配置说一下。本周末会更新功能安全相关,欢迎大家留言交流!作为一个总是用C写代码的人来说,第一次接触到基于MBD的代码生成的时候就迫不及待的…

【LeetCode笔记】215. 数组中的第K个最大元素(Java、快排、堆排、并发快排)

文章目录题目描述思路 & 代码快排基于 Fork / Join 的并发快排针对 topK 的快排优化堆排基本堆排结合题目的堆排二刷题目描述 大名鼎鼎的TOP K,主要考察排序快排 & 堆排 思路 & 代码 快排 没啥好说的,就是快排结束后,返回倒…

c语言中怎么画直线,ps如何画直线 【操作流程】

大家都知道电脑使用起来非常方便,但遇见ps如何画直线的时候就非常头疼了,如果你是第一次遇到ps如何画直线,怎么样才能快速解决ps如何画直线带来的烦恼呢?小编为大家收集了很多关于ps如何画直线问题的解决方法,下面请看…

【LeetCode笔记】470. 用Rand7()实现Rand10()(Java、概率)

文章目录题目描述代码 & 思路更新版三刷 - 极简版题目描述 貌似是比较高频的面试题目啊,有学概率论内味了(讲道理我概率论学得不好) 代码 & 思路 先用Rand7实现RandN(N > 10),类似进制&…

【纠错记录】本地FTP服务器无法被外部连接

问题描述 在本地主机开了个FTP服务器,本机可以正常访问,但是外部主机不能访问FTP服务器 解决方法 ① 一开始以为是服务端Xlight FTP的问题,检查权限并没有发现问题 ② 接着考虑到有没有可能是客户端Flash FXP的问题,于是尝试直…

双线性插值算法c 语言实现,双线性插值 - CristianoC的个人空间 - OSCHINA - 中文开源技术交流社区...

前言最近在学习LBP,其中的圆形LBP特征由于计算的值可能不是整数,即计算出来的点不在图像上,我们要使用计算出来的点的插值点。目的的插值方法有很多,Opencv使用的是双线性插值,今天就来介绍一下双线性插值。概述先给大…

【LeetCode笔记】543. 二叉树的直径(Java、dfs、二叉树)

文章目录题目描述思路 & 代码题目描述 思路 & 代码 由这个结论考虑:直径中一定有一个父结点,那么当前直径长度就是: 当前父结点的左子树深度 右子树深度那么,只要遍历所有结点的最长直径值即可流程:在找每一…

【LeetCode笔记】461. 汉明距离(Java、位运算)

文章目录题目描述思路 & 代码更新版题目描述 既然是二进制,那就十有八九用位运算符既然是不同,那肯定用异或 思路 & 代码 两种方法,总体来说都是处理异或值方法一,转换成字符串,再遍历(会慢一点…