标签归档:Ubuntu

配置NS3的Eclipse编译运行环境

前期准备

  1. Linux 系统,虚拟机、真机、子系统皆可
  2. NS3, 官方网站下载:https://www.nsnam.org/releases/
  3. Eclipse IDE for C/C++ Developers Linux 版本

本人使用的环境:

  1. Ubuntu 18.04 子系统/Bash on Windows (Windows 10)
  2. NS3 v3.29
  3. Eclipse Photon v4.8.0

搭建NS3环境

当下载好NS3后,可以在终端输入命令 ./build.py 进行构建。该命令成功执行后会在当前目录生成一个ns-3.29文件夹,该文件夹中就是我们通过命令构建的NS3,也是我们所需要的。

之后,我们再进入到生成的ns-3.29文件夹中,依次执行 ./waf configure — enable-examples — enable-tests 与 ./waf build 即可对NS3中的组件进行编译,编译成功后可以看到如下输出,说明NS3环境已经大丈夫(没问题)了😀。

 Waf: Leaving directory `/home/near/ns3/ns-allinone-3.29/ns-3.29/build'
Build commands will be stored in build/compile_commands.json
'build' finished successfully (20m56.899s)

Modules built:
antenna aodv applications
bridge buildings config-store
core csma csma-layout
dsdv dsr energy
fd-net-device flow-monitor internet
internet-apps lr-wpan lte
mesh mobility mpi
netanim (no Python) network nix-vector-routing
olsr point-to-point point-to-point-layout
propagation sixlowpan spectrum
stats tap-bridge test (no Python)
topology-read traffic-control uan
virtual-net-device wave wifi
wimax

Modules not built (see ns-3 tutorial for explanation):
brite click openflow
visualizer

Eclipse 的配置

新建NS3工程

打开Eclipse, 依次点击 File->New->Project,选择 C++ Project,然后 Project Type 选择 Executable -> Empty Project, Toolchains 选择 Linux GCC,然后直接点击Finish。具体配置见下图。

设置Waf为默认编译器

鼠标右键单击NS3工程,在选中的属性中选择 C/C++ Build, 需要配置Builder Settings 以及 Behaviour, 具体配置如下。

配置成功后可以在 Eclipse 的 Console 中看到NS3已经构建成功,因为之前我们在命令行中已经Build过了一次,所以这次会比较快,只用了5.590s 。

配置Eclipse Run Configuration

上一步我们把NS3在Eclipse编译的环境配置好了,那么只是能在Eclipse编译而已,如果我们需要在Eclipse中运行NS3的程序,就还需要进一步的配置。

选中标题栏 Run -> External Tools -> External Tools Configuration,需要配置的地方为Location, 设置为waf的地址,Working Directory 设置为NS3工程的地址,即waf的父目录,Arguments设置为 –run “$(string_prompt)”具体配置如下。

使用Eclipse 运行试试

点击应用并运行后,就可以在输入框中输入需要运行的程序,例如,scratch-simulator.cc 只需要在输入框中输入 scratch-simulator 即可,运行结果会在Console中显示。

这样就大功告成了。

附录

Bash on Windows:Windows平台下Ubuntu图形界面程序

由于有对Ubuntu环境的需求,之前一直使用Ubuntu/Windows 双系统, 但是最近很遗憾地,装Ubuntu的SSD挂了😭。所以,只能看看其他办法。

于是乎,发现了新大陆,不需要双系统,不需要虚拟机,不需要远程连接,直接在Windows下运行Ubuntu图形界面程序,而且可以直接从任务栏用快捷方式打开。简直棒棒的👍。

比如,上面看似是一个普普通通的火狐浏览器,但其实它是Ubunut系统下的,但是却运行在了Windows操作系统下。想知道是如何实现的,就继续往下看吧。

1、在Windows 10 下安装好Ubuntu子系统

具体步骤,可参考网上相关资料。

2、下载安装XMing

这个软件可以运行一个虚拟的Windows桌面环境,可以让Ubuntu程序直接运行在Windows桌面环境下

此外,本站也提供该软件下载。安装过程中全部默认就好。

在XLaunch中设置Display的数量,默认为0,这个数字与后面命令的输入的数字要匹配。

3、在Windows桌面环境打开Ubuntu软件

在Ubuntu子系统的终端下输入以下命令。

DISPLAY=:0 firefox

就可以打开火狐浏览器了,其他软件的话就更改后面的就行了哦。我们还可以给它们新建一些快捷方式,这样就可以直接点击图标打开了。

在输入框中输入如下命令即可。

bash -c “DISPLAY=:0 firefox”

Ubuntu远程连接Windows解决方案

最近时逢国庆佳节,无奈需要写一篇论文,而去实验室的道路十分费时,由于连日下雨,路上十分湿滑,故想要使用笔记本上的Ubuntu系统去远程连接实验室的Windows电脑,这样既节省了时间,也可以开启远程办公的生活,想想还是还不错的。

用Ubuntu远程连接Windows主要要两种方案,TeamViewer 与Windows原生。

方案一:TeamViewer

在Windows电脑和Ubuntu电脑上分别下载安装TeamViewer软件后,在Ubuntu上的TeamViewer中输入Windows 软件中的ID与密码后就可以远程连接了。但是这种方式有很多缺点:

  • Windows的TeamViewer软件必须保证开启
  • Ubuntu上的TeamViewer中的Windows桌面分辨率无法动态适应,仍为Windows桌面下的分辨率。
  • 在Ubuntu通过TeamViewer远程操控Window电脑

方案二: Windows原生

Step.1 在Windows 上设置开启远程桌面

 控制面板->系统与安全->系统->高级系统设置->远程

Fig.1 Windows远程桌面设置

Step.2 在Windows开启内网穿透

由于需要通过互联网远程连接登陆桌面时,就需要Windows 这边能有一个公网的独立IP地址,但是大多数情况下,网络运营商是不会给我们独立IP的,所以需要进行内网穿透,也就是通过一个服务使得在不同网段的机器也能相互访问。

推荐一个内网穿透服务EchoSite, 暂时发现是免费的,使用效果也还不错。

首先,在该网站注册,下载Window客户端echosite.exe,与配置文件echosite.yml。编辑配置文件。

# 这是你的 EchoSite 购买域名的服务器标志
server_addr: cross.echosite.cn:4443
trust_host_root_certs: false

# 这是你的 EchoSite 注册手机号
echo_account: 13333333333
# 这是你的 EchoSite 账户密码
echo_password:

# 以下是你需要开启的通道,只能开启属于你的域名通道
# 以下分别是 http 和 https 以及 tcp 协议的示例
tunnels:
rdp:                                #主要添加此通道
remote_port: 61234    #服务器的端口号,可以更改
proto:
tcp: 127.0.0.1:3389   # 远程桌面的端口号,不能更改
name1:
subdomain: "hades"
proto:
http: 127.0.0.1:80
name2:
subdomain: "echomod"
proto:
http: 127.0.0.1:8080

# 开启命令 先进入到客户端所在的目录 可以选择开启一个或多个通道
#
# linux ./echosite -config=./echosite.yml start name1 name2
# mac ./echosite -config=./echosite.yml start name1 name2
# windows echosite -config=echosite.yml start name1 name2

使用cmd运行命令启动该软件。

.\echosite.exe -config=echosite.yml start rdp

Step.3 在Ubuntu使用Remmina远程连接Windows

打开软件后,输入上面的信息,服务器是你选择的服务器域名加上设置的端口号,用户名和密码就是Windows 上的账户名密码了。

Fig2. Remmina 连接设置

连接上去的效果是这样的,分辨率很好的适应了Ubuntu电脑的屏幕。还有一个优点是Windows电脑锁屏时也是可以操作的。这样就大功告成了。

Fig.3 远程桌面效果