How to install Boost on Ubuntu
我在Ubuntu上,我想安装Boost。我尝试过
1
| sudo apt-get install boost |
但没有这样的包裹。在Ubuntu上安装Boost的最佳方法是什么?
您可以使用apt-get命令(需要sudo命令)
1
| sudo apt-get install libboost-all-dev |
或者你可以打电话
找到您需要的包,并使用apt-get命令安装它们。
- 你以前在Boost上有过什么经验吗?
- 我有Boost的编程经验,但没有安装经验。我自己从来没有尝试过,所以我不能说它是否易于使用(但在我看来,包管理器是最简单的方法)。我应该把这个建议作为评论发表,但我不能评论问题。
- 没关系,伙计……我正在尝试你的建议……提供任何可能有用的链接。
- 你可以试试这个链接,但我认为应该没有问题,你只要有能力安装,然后开始使用Boost。
- 使用apt-get的一个缺点是,它通常是最新的boost版本背后的两个版本。
- 你能建议另一种方法来解决"不匹配版本的boost.build引擎和核心"的问题吗?
- 我一直没能及时找到它!谢谢分享,安东
- 很容易从源代码构建和安装Boost,例如anycoder.wordpress.com/2014/04/28/building-boost
- 很好,它像一个魅力,有没有办法安装特定的boost包,例如我只想安装boost/asio.h及其依赖项,有没有办法做到这一点?
- 我已经有了,但仍然得到.build ou release/lib/libcaffe.so:对'boost::python::throw_error_already_set()'的未定义引用
- 我想必须提到,要安装特定的库,您需要输入以下命令:aptitude install libboost_library_name
- 它似乎不起作用-我运行了命令sudo apt-get install libboost-filesystem1.55.0,但只安装了库,而不是头。#include 或#include 抱怨文件丢失。
- 不要使用打包版本的Boost,现在在Ubuntu 16.04上是1.58,最新的稳定版本是1.67.0!请参阅下面的回复和我的评论:stackoverflow.com/a/41272796/2617716
获取所需的Boost版本。这是1.55版,但您可以自行更改或手动下载:
1 2 3
| wget -O boost_1_55_0.tar.gz https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0/ |
获取所需的库,主要是icu支持boost::regex支持:
1 2
| sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev |
Boost的引导设置:
1
| ./bootstrap.sh --prefix=/usr/ |
然后构建它:
最终安装:
- 如果我们使用/bootstrap.sh--prefix=/usr/include,有什么区别?我在/usr/include中有boost库。我在想,通过这样做,我可以替换我的旧安装吗?
- 什么是libboost all dev?为什么要在安装Boost之前安装Boost?
- 最后一步执行./b2 install。
- 因为典型的Ubuntu用户应该使用apt或aptitude而不是手动安装。让包经理跟踪事情。
- @TBC0 Boost现在的版本是1.59,而最新的PPA是1.55,因此从源代码构建是相关的
- 谢谢你的回答。我现在已经从源代码安装了Boost1.62。但是,我已经从Ubuntu存储库安装了1.58。如果我试图获得卸载boost,它会威胁到依赖它的包。是否有解决方案不涉及重新安装其他软件包?
- 我可以安装Boost1.59,MySQL5.7需要它,Ubuntu140.4默认没有它。不知道为什么需要python dev
- @我收回了我的评论。我取消了投票。
- @tbc0谢谢你的下午。
- 不管怎样,从源代码构建是一个很好的练习,如果他们对尝试感兴趣的话不会有任何伤害,并且作为这里的首要答案已经展示了如何使用包管理器,最好有另一个答案展示一种替代方法。
- 我们如何验证该版本以确保它在末尾正确安装?我刚在Boost v1.66.0上编译了./b2 install,但运行dpkg -s libboost-dev | grep 'Version'时说我有1.54.0.1ubuntu1版本,可能是因为这是以前通过sudo apt install libboost-all-dev安装的版本。
- 请将链接更改为https;http对于二进制下载不安全:)
- @javapowered如果某个程序试图安装一些boost头文件,它将覆盖最新的头文件并创建地狱。
- sudo ./b2 install也构建了它。你不必事先打电话给./b2。
- 这很好,但它把蛋糕弄坏了
在Ubuntu上安装Boost,以使用boost::array为例:
安装libboost所有dev和aptitude:
1 2 3 4 5
| sudo apt-get install libboost-all-dev
sudo apt-get install aptitude
aptitude search boost |
然后将其粘贴到一个名为EDCOX1的C++文件中:4:
1 2 3 4 5 6 7 8 9
| #include <iostream>
#include <boost/array.hpp>
using namespace std;
int main(){
boost::array<int, 4> arr = {{1,2,3,4}};
cout <<"hi" << arr[0];
return 0;
} |
编译如下:
像这样运行:
程序打印:
- "boost::arrayarr=1,2,3,4"行中有错误,应为"boost::arrayarr=1,2,3,4"
- 我为什么要运行aptitude search boost?
获取所需的Boost版本。这是1.55版,但您可以自行更改或手动下载:
1 2 3
| wget -O boost_1_55_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download
tar xzvf boost_1_55_0.tar.gz
cd boost_1_55_0/ |
获取所需的库,主要是用于boost::regex支持的ICU:
1 2
| sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev |
Boost的引导设置:
1
| ./bootstrap.sh --prefix=/usr/local |
如果需要MPI,则需要在user-config.jam文件中设置标志:
1 2
| user_configFile=`find $PWD -name user-config.jam`
echo"using mpi ;">> $user_configFile |
查找物理核心的最大数量:
1
| n=`cat /proc/cpuinfo | grep"cpu cores" | uniq | awk '{print $NF}'` |
平行安装增压器:
1
| sudo ./b2 --with=all -j $n install |
假设已经安装了/usr/local/lib。如果没有,可以将其添加到您的ld-library路径:
1
| sudo sh -c 'echo"/usr/local/lib">> /etc/ld.so.conf.d/local.conf' |
重置ldconfig:
- 一些东西,如po edit 2.0需要boost 1.6,但目前不能通过apt get获得,您可以从boost.org/users/history/version_1_60_0.html获得,然后扩展它。遵循上面的优秀说明,记住ld-library路径与$path不同
- 请将链接更改为https;http对于二进制下载不安全:)
- 最近安装的评论,要获取最新版本,请访问boost.org和"当前版本"下载以获取最后一个版本(当前为1.67.0:dl.bintray.com/boostorg/release/1.67.0/source/&hellip;)谢谢!
- 哈哈,这把我的系统搞砸了。我想是最后两项。
通过子系统(也适用于标准Ubuntu)更新Windows 10 Ubuntu应用程序:
您可能在查找包时遇到问题。如果你这样做了,不要害怕!PPA在这里!
1 2
| sudo add-apt-repository ppa:boost-latest/ppa
sudo apt-get update |
然后运行:
1
| sudo apt-get install libboost-all-dev |
- OP没有要求Win10。
- 我知道,是为那些(像我一样)寻求全面解决方案的人发布的。类似于Алексек
- @阿德里安这个答案与Windows10无关。这是关于运行在Windows10内核上的Ubuntu的问题,所以对于那些以某种方式运行Ubuntu的人来说,这是一个有效的解决方案。由于这个问题并没有限制它只能运行在Linux内核上的Ubuntu,所以这个解决方案是可以的。
实际上,在项目中使用boost之前,不需要"安装"或"编译"任何东西。您只需下载并提取Boost库到您机器上的任何位置,这通常类似于/usr/local/。
当您编译代码时,您可以通过-I指示编译器在哪里找到库。例如,g++ -I /usr/local/boost_1_59_0 xxx.hpp。
- 这只对boost的头库有效。其余部分需要使用包管理器进行构建或安装,如上述答案中所述。需要单独构建和安装的boost库如下:atomic、chrono、container、context、coroutine、coroutine2、date_time、exception、filesystem、graph、graph_parallel、iostreams、locale、log、math、mpi、program_options、python、random、regex、serialization、signals、system、test、thread、timer、type_erasure、wave。
- 即使按照Elias Kouskoumvekakis的进一步说明来修复这个解决方案也是一个坏主意(除非你有充分的理由),因为包管理器可以很容易地将boost更新到较新的版本(在Ubuntu中,只要一个sudo apt update; sudo apt upgrade就可以将所有包升级到存储库中的最新版本)。为Boost和非常容易从系统中删除Boost提供适当的包存储库。手动方法使这些任务更加困难,因此您需要一个很好的理由来跳过包管理器的好处。
- 另外,不使用包管理器进行安装更好地包含在前面的回答中,其中包括必要的构建说明。