在Manjaro(Arch系)环境下编译NS3以及启用C++11

19 篇文章 0 订阅
12 篇文章 8 订阅

更新

  1. 必须安装的依赖是pygccxml,不是pygccxml-svn
  2. manjaro库里面的pygccxml版本如果提示太旧(我安装ns3-dev版本时遇到的),需要用pip或者easy_install安装最新版本
  3. 如果一定要启用Python绑定的话,更加合适的操作是编译时指定Python版本,要不然因为manjaro系统包括一些管理工具使用的是Python3,会导致一些安装问题(比如castxml,在库中对应的名字castxml-git):
CXXFLAGS='-std=c++11' python2 ./waf configure --with-python=python2 --enable-examples --enable-tests --enable-sudo

———————————————————————————————————————————-
  首先,编译NS3本身这事并不难,几个命令一敲就完事了,问题是不同的Linux发行版下的依赖包的名称不一样,在官方的NS3 Installtion指南中并未提供Manjaro(一个新生的Linux系统,确实好用,Arch衍生版)发行版的依赖包说明,无法安装依赖包就无法很好的编译常用模块。下面我们来说一下在Manjaro(或者Arch Linux)系统下如果要正常编译需要安装哪些必须的依赖:

pacman -S gsl gtk2 libxml2 sqlite boost boost-libs graphviz dia qt4 python2 python2-setuptools python2-pydot goocanvas pygoocanvas pygtk python2-pygraphviz pygccxml openmpi flex fakeroot findutils

  以上是我认为正常使用编译常用模块所必须的一些依赖,如果你要分析pcap、tr文件,可以安装tcpdump、wireshark-gtk,如果你要调试可以安装gdb、valgrind(感觉用不到,从来没分析过),如果你要在本地阅读文档需要安装mercurial、bzr、texlive-bin、python2-sphinx、uncrustify。

  安装完依赖之后就是编译,但是编译之前你需要做一点工作,进入ns3解压文件的目录,找到waf文件,用VIM或者编辑器打开,第一行:

#!/usr/bin/env python

改为指定Python2版本,因为manjaro无论什么软件一直用的都是最新的:

#!/usr/bin/env python2

或者

#!/usr/bin/python2

如果这样改在编译的时候遇到和Python相关的问题,可尝试如下方法:

rm /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python

编译完成之后:

rm /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python

  如果不改回来,在使用manjaro的时候可能会遇到一些未知问题,而且你还不知道是由于什么原因导致的,这也是因为manjaro一直采用最新的软件版本,一些图形化的软件是调用的Python3的库,所以当你把默认的Python指向Python2时,软件就会出问题,而且没有任何提示(我就是在改了之后包管理器有个选择镜像源的功能无法使用)。

  顺便提一下,NS3从3.26版本开始提供支持C++11的新特性,如果你正在使用的版本或者想使用的版本在这个之前又想启用C++11,你需要在编译的时候加上如下前缀:

CXXFLAGS="-std=c++11" ./waf configure

  3.26版本及以上不需要添加此前缀。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值