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

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

内容简介: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这个准标准库的特性展开。


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

查看所有标签

猜你喜欢:

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

在你身边,为你设计

在你身边,为你设计

腾讯公司用户研究与体验设计部 / 电子工业出版社 / 2013-1 / 69.00元

设计属于所有人,也意在为所有人使用,这既是设计的价值,也是设计的责任。本书内容包括:设计理念、设计方法、用户研究、体验设计、设计流程和工具,以及团队成长与管理等方面的知识与经验分享。一起来看看 《在你身边,为你设计》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试