Linux中安装boost库,及gcc版本过高问题

我装的是双系统,ubuntu 18.04 ,这个区别应该没什么问题

这是我的路径 F:\SRF\urlearning\....

Linux中安装boost库,及gcc版本过高问题_第1张图片

PS:整个过程中,要是提示权限不够,就输入命令 sudo -s

再输入密码(密码不会显示位数),输完直接回车,就是root了

 

目录

一、软件环境

二、编译 urlearning

三、开始跑数据

Disclaimer:本文档解决的是刘老师发给你们的 urlearning 源代码成功编译的方法,也就是直接

make 的那个版本的源代码如何成功编译,这个要注意,别搞混了。另外,像 codeblocks 这样的 IDE,我基本不用,一直都是命令行裸奔,所以关于 cb 中 gcc、boost 还是其他报错,别找我,找我也不会,百度去。本文档中的所有内容,都是在命令行中完成。

--gy

软件环境

确保使用的是 gcc-4.8.5 和 g++-4.8.5,以及 boost 1.58.0

使用命令 gcc --version 和 g++ --version 查看版本

4.8.5 版本的安装:

sudo apt-get install -y gcc-4.8 g++-4.8

注:因为我之前试了 gcc-7.3 的高版本编译 boost 而没有成功,导致现在系统里面有多个版本的 gcc,所以现在要指定 gcc 版本为 4.8(各位要改的就是第三条命令中的

/usr/bin/gcc-7 ,自己用命令:

ls /usr/bin

看下都有啥高版本的 gcc,然后对应修改我下面三条命令中的“gcc-7”):

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50

update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50

update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20

 

我之前boost装好后在urlearning下make,一直报错。是因为gcc版本高,高版本的gcc编译后的boost不行。

Linux中安装boost库,及gcc版本过高问题_第2张图片      可以看到我的系统里面有两个gcc版本

所以第一步就是装低版本的gcc,然后调整默认用的gcc版本(优先级)

Linux中安装boost库,及gcc版本过高问题_第3张图片

卸载高版本 gcc 编译后的 boost(因为你现在要用 4.8.5 重新编译 boost):

进入/usr/lib 中使用命令

rm `ls | grep "boost"`

用这个卸载旧的boost

注:这里命令中的两个`是 shell 命令语法,意思是把 ls | grep "boost"的输出交给 rm 命令去删除

接着进入/usr/include 中,使用命令

rm -rf boost

接着回到之前下载 boost 压缩包的文件夹,下载旧版本的 boost 1.58.0:

使用命令:

wget https://jaist.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.bz2

tar --bzip2 -xvf boost_1_58_0.tar.bz2

cd boost_1_58_0

./bootstrap.sh --with-libraries=all --with-toolset=gcc

./b2 toolset=gcc

./b2 install --prefix=/usr

Ldconfig

怎么看自己默认的gcc版本和boost对不对呢?

把下面这段代码保存在一个test.cpp文件中,搞一个新的单独的文件夹保存这个cpp文件,然后用命令g++ test.cpp -o test编译它,然后使用./test运行

#include 
#include 
#include 

int main()
{
    std::cout << "Boost version: " 
          << BOOST_VERSION / 100000
          << "."
          << BOOST_VERSION / 100 % 1000
          << "."
          << BOOST_VERSION % 100 
          << std::endl;
    return 0;
}

使用命令 gcc --version 和 g++ --version 查看版本

 

---------------------------------分界线---------------------------------------

1

使用make命令可以运行urlearning下的Makefile文件,新生成了两个文件夹build和dist。具体操作:

右键选中 urlearning 文件,选择在终端打开,在终端中输入make命令

可能会提示需要安装make什么的,跟提示安装就好

sudo apt install make

sudo apt install make-guile

后发现project中多了build和dist两个文件夹

2

打开build和dist的内容发现build中是编译后读中间文件(.o),dist里有一个可执行文件。

build中经过编译后读中间文件(.o)

dist中的可执行文件

3

在dist的上一级目录GNU-Linux-x86中右键选择在终端打开,输入./astar-debug即可运行该可执行程序。

运行可执行文件astar-debug

4

仔细阅读后,发现运行该文件必须要有一个参数,后缀名为.pss的文件。可以从https://bitbucket.org/bmmalone/urlearningcpp/src找到pss文件。我们把其中一个Heart.csv.bic.pss文件放到和astar-debug同一个文件夹下。

 

按第3步执行的命令,添加参数,输入 ./astar-debug Heart.csv.bic.pss -n network.net命令:

 

此时发现GNU-linux-86下多了一个network.net文件

 

建议:

有必要把论文读一遍,清楚做的相关工作。重点了解.pss文件如何生成

可以先阅读makefile内容从而清楚编译过程,然后再详细的读代码,可能比较重要读代码:

以上找到对应读cpp代码。

 

可以通过阅读https://www.cnblogs.com/mfryf/p/3305778.html了解有关Makefile的内容,从而读懂Makefile文件

---------------------------------分界线---------------------------------------

然后是果杨学长后面的软链接设置,在我的电脑上遇到了问题,后来调整好了

 

注:在编译结束后,dist 文件夹中搜搜搜搜到 astar_debug 后,可以建立软连接实现到

处都可调用的功能。进入 urlearning 中的 dist/Debug_astar/GNU-Linux-x86 中用命令

ln -s $PWD/astar-debug /usr/local/bin/astar

在/usr/local/bin/中建立了一个软链接(软连接和硬连接后面操作系统和 Linux 编程会学)。

这样你就不需要每次都跑到 Debug_astar 文件夹中,使用./astar_debug 来调用 astar了,直接在任意路径下命令行输入 astar,就可以使用 A*算法。

 

我是把pss文件夹复制到urlearning里,然后从pss里打开终端,

再用astar XXX...执行

 

例如:astar Hepatitis.csv.bic.pss -n Hepatitis.net

如果有错误的话:

首先

 rm /usr/local/bin/astar

然后直接

ln -s /home/urlearning/dist/Debug_astar/GNU-Linux-x86/astar-debug /usr/local/bin/astar


注意这里前一部分的路径/home/urlearning要改成你自己的urlearning的路径

或者,你命令行进入urlearning文件夹后,使用

ln -s $PWD/dist/Debug_astar/GNU-Linux-x86/astar-debug /usr/local/bin/astar

使用命令:

astar Hepatitis.csv.bic.pss -n Hepatitis.net

后缀为.net的就是最终的输出。

 

 

 

你可能感兴趣的:(Linux入门,SRF)