使用Docker搭建C++ Boost开发环境

栏目: C++ · 发布时间: 5年前

内容简介:Docker进阶 & C++ boost入门昨天玩docker玩到夜里一点多,总算是使用docker搭建了一个能够编译引用了C++ boost库的应用程序的开发环境,犹豫了许久要不要输出这篇博客,后来觉得可以简单写一写,主要原因两个,其一是因为这可以让我再加深一些对docker常用命令的印象;其二是为学习后面的C++ boost库开一个头,有一个能够编译boost程序的快捷的环境。所以正好用一篇文章达到两个目的。因此得出这篇文章就会围绕我上面提到的两个点进行展开,分别是如何使用docker搭建一个独立可运行

Docker进阶 & C++ boost入门

昨天玩 docker 玩到夜里一点多,总算是使用docker搭建了一个能够编译引用了C++ boost库的应用程序的开发环境,犹豫了许久要不要输出这篇博客,后来觉得可以简单写一写,主要原因两个,其一是因为这可以让我再加深一些对docker常用命令的印象;其二是为学习后面的C++ boost库开一个头,有一个能够编译boost程序的快捷的环境。所以正好用一篇文章达到两个目的。因此得出这篇文章就会围绕我上面提到的两个点进行展开,分别是如何使用docker搭建一个独立可运行的centos并能够通过外部ssh连接到这个container container并提交到自己个人的docker hub仓库,以及如何在centos中安装boost库,并完成一个显示boost版本的c++程序,下面正式进入主题

Docker创建Centos镜像

启动镜像

实际上这一步非常简单,只需要从远程仓库搜索到指定的docker image,拉下来,并使用docker run执行之就可以了,这里搜索直接使用下面的命令搜索在Docker hub中所有可用的image

docker search centos6.5

这里出现了一系列备选的image选项,从中选取任意一个就可以,这里我选择了star数最多的,与github类似,star代表了这个镜像的流行程度和靠谱程度

使用Docker搭建C++ Boost开发环境

下面就可以直接使用docker run来运行这个image,具体到我这里,命令如下

docker run -it --name="bryantchang_boost_proj" --user root -p 2200:22 --privileged=true --cap-add=SYS_PTRACE --cap-add=SYS_TIME --security-opt seccomp=unconfined -v /Users/bryantchang/Desktop/codes/tools/docker/srcs:/home/bryantchang/docker_proj hasedon/centos6.5 /bin/bash

这里面有一些重要的参数需要说明:

-it  使用交互模式运行(-i 和 -t是两个独立的配置项,不过很大概率上他们是被绑在一起使用的)
-p 2200:22 将docker中的22端口映射到本机的2200端口,那么我们在docker中部署好sshd server之后,可以通过访问2200端口访问到内部的docker容器
--name 这个container的名字
--user 运行image的用户名
--privileged 是否对image拥有系统权限,如果这个参数不设置成true,及时使用root用户启动了image,也只是普通用户而已
--cap-add 这个景象中拥有的能力,例如用于支持gdb的SYS_PTRACE,用于显示时间的SYS_TIME
-v : 将本地的某个目录映射到image中的某个指定目录(文件的本地与远程的映射)
/bin/bash 启动container后就是/bin/bash

这里需要说明一下,这里通过docker内部部署sshd server来让外部访问docker container的方式并不推荐,这里只是为了介绍-p的含义,docker的4中推荐的访问方式详见 docker的4种推荐访问方式

当然这里面也有一些问题,稍后我会说明。这时,一个干净的centos6.5镜像就被部署在了本地的docker engine中,下面先暂时抛开docker环境,我们把操作的对象集中于Centos6.5本身,下面的主题就是如何在centos中安装boost库

Centos安装boost库以及c++编译环境+gdb

首先安装基本的lib

yum upgrade
yum update
yum install -y

安装gcc g++以及gdb,这里都是一些简单的命令,不过多赘述,直接上命令

yum -y install gcc  #安装gcc
yum -y install gdb  #安装gdb
yum -y install gcc-c++ #安装g++

安装完这些简单的lib和工具,现在先简单写个cpp程序测试一下是不是上述 工具 是否安装成功,写了一个最简单的Hello World,代码如下

#include <iostream>
using namespace std;
int main() {
    cout << "Hello World" << endl;
    return 0;
}
g++ -o main main.cpp
./main

效果如下

使用Docker搭建C++ Boost开发环境

程序运行成功,说明环境安装完成。至于gdb,直接输入gdb就可以看到是否安装成功

其次,安装boost库,安装方法也十分简单,首先下载boost的压缩包,这里我们安装的是1.64.0

wget http://ufpr.dl.sourceforge.net/project/boost/boost/1.64.0/boost_1_64_0.tar.bz2

解压后直接通过bootstrap和b2进行安装

./bootstrapt.sh
./b2 --buildtype=complete install

这里我用的是完全安装,脚本将会自动安装调试版,正式版,静态库和动态库。

完成安装后,boost库宣告安装完成,下面我们用一个boost中的helloworld程序打印我当前的boost版本,代码如下

#include <iostream>
#include <boost/version.hpp>
using namespace std;
int main() {
    cout << "Boost 版本" << BOOST_VERSION << endl;
    return 0;
}

还是按照之前的方式进行编译,并运行,运行结果如下

使用Docker搭建C++ Boost开发环境

到此,我们完成了boost库的安装,接下来则是保存当前的镜像状态,将这个镜像提交到个人的dockerhub,如果没有dockerhub的话,需要类似github一样在Docker hub仓库注册新的账户,注册完后,在本机输入下面命令连上dockerhub的提交客户端,如果出现如下信息,说明登录成功

docker login
使用Docker搭建C++ Boost开发环境

下面我们完成最后一步,将image提交到个人仓库

调教当前image到docker hub

与github类似,提交到docker镜像仓库也有两步,commit和push,commit为本地提交,命令如下

docker commit -a bryantchangxy -m "boost commit" bryantchang_boost_proj bryantchangxy/gcc_boost:latest

其中 -a为提交的用户,-m 为提交时的摘要,bryantchang_boost_proj这个名字则是你运行的container的名字,如果没有的话就要填写当前运行container id bryantchangxy/gcc_boost:latest则是你自己仓库下的某个具体的某个项目,完成后会生成一个sha256的代码用于标示本次提交

使用Docker搭建C++ Boost开发环境

完成后,正式push到个人仓库,命令如下

docker push bryantchangxy/gcc_boost:latest
使用Docker搭建C++ Boost开发环境

成功后就可在个人的仓库中看到自己的image了

使用Docker搭建C++ Boost开发环境

同时还能够通过docker search搜索到自己的的image

docker search gcc_boost
使用Docker搭建C++ Boost开发环境

大功告成,最后为我的image做个广告,自己在这个景象中安装了常用语言的编译,执行环境,如java,scala,go等还有mvn等一系列工具,欢迎大家下载,star个人的docker hub地址为 docker hub个人主页 后面有一些好玩的东西,我也会以image的方式放到这个仓库中,欢迎大家关注。后面的文章将正式围绕boost这个准标准库的特性展开。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机体系结构

计算机体系结构

John L. Hennessy、David A. Patterson / 机械工业出版社 / 2012-1 / 138.00元

编辑推荐 “本书之所以成为永恒的经典,是因为它的每一次再版都不仅仅是更新补充,而是一次全面的修订,对这个激动人心且快速变化领域给出了最及时的信息和最独到的解读。对于我来说,即使已有二十多年的从业经历,再次阅读本书仍自觉学无止境,感佩于两位卓越大师的渊博学识和深厚功底。” ——Luiz André Barroso,Google公司 内容简介 本书堪称计算机系统结构学科的“圣经......一起来看看 《计算机体系结构》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具