Mac本地用Eclipse配置NS3开发环境(完整教程)

前言

这段时间接触了NS3,发现这个框架在计算机网络领域用的还是蛮多的,在本地搭建开发环境的过程中也遇到了不少坑,这里记录一下整个过程。

在终端下编译和运行NS3程序

NS3的下载和编译NS3官网上给的过程已经很详细了,这里简要概述一下。官放一共提供了三种方法:build.py,bake,waf。个人推荐使用waf编译整个项目(官方文件中自带waf编译器),因为前两种涉及到好多python环境的依赖,我觉得容易出问题。
在我的Mac上由于使用clang++,一定要加上--disable-werror,如果需要搭建python3的开发环境,需要指明python3具体位置。

1
2
3
cd (本地存放位置)/ns-allinone-3.29/ns-3.29/
./waf --enable-test --build-profile=debug --python=/usr/local/bin/python3 --with-python=python3 --disable-werror configure
./waf build

经过一段时间的编译之后,在当前目录下运行一个官方例程scratch-simulator,如果一切顺利可以看到程序输出一行Scratch Simulator

1
./waf --run scratch/scratch-simulator

在Eclipse上配置NS3开发环境

作为一个新手,如果没有一个友好的开发环境,很容易就进入从入门到放弃的阶段。NS3最让我不能接受的是必须用官方给的waf编译代码,我一开始尝试在Xcode搭建环境,然而Xcode好像对于使用外部编译器的支持不是很好,最终我还是转到在Eclipse上搭建开发环境。

在Eclipse上新建项目

按如下顺序File -> New -> C/C++ Project,创建C++项目

着重强调!!!NS3的代码必须放到(本地存放位置)/ns-allinone-3.29/ns-3.29/scratch/文件夹下才能被正确编译执行所以工程位置放在(本地存放位置)/ns-allinone-3.29/ns-3.29/,这里工程名字自己定,我这里取名为NS3,右侧的编译器随便选一个,之后点finish完成。

编译NS3项目

如果前一步没遇到问题,现在左侧的工程目录应该基本长这样子,以后就直接在scratch目录下新创xxx.cc文件就好了。

之后这里右键NS3文件夹,进入工程属性面板。右侧点击C/C++ Build然后照我的样子配置两处。
编译器类型记得选为外部编译器,编译器选为当前目录下的waf编译器,编译结果放在当前目录下的build文件夹中


之后进入到(本地存放位置)/ns-allinone-3.29/ns-3.29/进行configure操作,如果之前已经configure过了可以跳过该步骤。

1
2
cd (本地存放位置)/ns-allinone-3.29/ns-3.29/
./waf --enable-test --build-profile=debug --python=/usr/local/bin/python3 --with-python=python3 --disable-werror configure

configure过了之后点击Eclipse左上角的Build按钮就可以编译整个NS3工程了

配置Eclipse使用外部编译器waf

构建完了整个NS3工程之后,我们后续怎么运行我们自己写的代码呢?这时候需要配置使用外部编译器waf。
Eclipse顶部按如下顺序Run -> Extern Tools -> Extern Tools Configurations

左侧右键点击新建一个编译器。
我这里将这个外部编译器取名为ns3-waf,其余两个和之前一样,参数这里填写--run "${string_prompt}"

这里点掉这个Build before launch选项

之后点击Eclipse上方红色方框内的按钮

然后会弹出一个选项框让填写你要编译的文件的名称注意这里不用加.cc后缀,比如我要编译运行scratch文件夹下的scratch-simulator.cc,就直接填写scratch-simulatorscratch/scratch-simulator。如果你的自己写的文件之前已经build过了,就不需要再加文件目录scratch/,直接填写文件名就好。

下方显示运行结果

配置NS工程路径

此时虽然能够运行自己写的NS3代码了,但是代码中却还有一堆烦人的下波浪线〰️,并且头文件的引用等都是查询不到的,这里就需要配置一下NS3工程路径和环境。
和之前一样,首先进入属性面板。然后找到图中所示的配置目录
这一步将(本地存放位置)/ns-allinone-3.29/ns-3.29/build/ns3/下所有工程头文件包含了进来。

然后构建会花费一小会时间,之后可以在左侧NS3/includes/下看到新生成了一个NS3/build/ns3文件,然后代码中的波浪线就全部消失了

配置完成