虚拟机环境
换源
原来的源下载东西很慢,在软件和更新中即可换源,更换为阿里的源。
配置Clion环境和安装:
一,环境
Ubuntu中用到的编译工具是gcc©,g++(C++),make(连接)。因此只需安装对应的工具包即可。Ubuntu下使用命令安装这些包:
- 安装gcc
sudo apt install gcc
- 安装g++
sudo apt install g++
- 安装make
sudo apt install make
我就安装了这三个,此时Clion已成功检测,并能编译成功。
- 同时可以将git安装一下
sudo apt install git
网上也看见更完整的环境:
在安装之前,请执行下面的命令,把环境搭建一下
sudo apt-get update sudo apt-get install build-essential sudo apt-get install cmake sudo apt-get install bison sudo apt-get install library* sudo apt-get install libncurses5-dev sudo apt-get install g++ sudo apt-get install kdelibs5-dev sudo apt-get install make
执行完成后,环境就搭建好了
二,安装
Clion从官网下载解压包之后,解压进入bin目录下
./clion.sh
没有桌面图标入口的话
Clion内 Tools->Create Desktop Entry即可
boost安装
一,安装
根据这 文章 完成了boost的安装,可以使用wget或者官网下载后解压
# 来自上述文章
# 首先删除本地原有的 boost 库
rm -f /usr/lib/libboost*
rm -fr 'find / -name libboost*'
# 移除boost头文件
mv /usr/include/boost /usr/include/boost-bak
# 下载 wget
apt-get install wget
# 下载Boost库
wget https://dl.bintray.com/boostorg/release/1.57.0/source/boost_1_57_0.tar.gz
tar -zxvf boost_1_57_0.tar.gz
cd boost_1_57_0
# 安装必要的库
sudo apt-get update
sudo apt-get install build-essential g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev
# 构建符合环境的脚本
./bootstrap.sh
# 编译一下
./b2
# 最终安装
sudo ./b2 install
如果编译好程序后,在运行时提示无法加载某个库文件,则把/usr/local/lib下的所有boost的库文件mv到/usr/lib目录下就可以了。
上文是没有指定安装位置,这样头文件就被默认安装在/usr/local/include头文件下,库文件就被默认安装在/usr/local/lib下,ubuntu16.04安装boost到指定目录下。
二,遇到的一些问题
1.库无法安装(依赖关系)
类似:
python2.7-dev : 依赖: python2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 已安装。
依赖: libpython2.7 (= 2.7.3-0ubuntu3) 但是 2.7.3-0ubuntu3.1 已安装。
依赖: libexpat1-dev 但它将不会被安装。
依赖: libssl-dev 但它将不会被安装
用aptitude 工具可以两步搞定:
sudo apt-get install aptitude
sudo aptitude install python-dev
若保持当前软件包的状态问题可能无法解决,所以第一个选n,第二种方案降级y。全文链接
2. 移动文件权限不够
就是解决上述boost提示无法加载某个库文件,因为默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,将会将库安装在/usr/local/lib下,故当程序需要链接动态库时,会报错。
一种简单粗暴的方法就是将关于boost的文件移动到/usr/lib下
另一种,如文章中所示
移动的过程中,提示权限不足,在需要被复制的文件夹下打开终端:
sudo nautilus
然后选择需要复制到的文件夹目录下,从被复制文件夹下 复制文件 到该文件夹下粘贴即可。