看这里:最简单的方法就是使用wsl2(需要win11),因为微软的wsl实际上是维护了一个将linux命令转换为windows命令的庞大接口库,所以在底层会有一些不兼容。而wsl2则与linux完全相同,可以理解为一个docker。
wsl里面似乎无法运行ns3的可视化模块,visualizer和netanim好像都不行。
vscode首次启动wsl server失败
根据vscode-remote-release仓库的issue#1856
wsl中调用gdb出现cannot insert breakpoint
在wsl仓库的issue里面
不能启动visualizer
运行./ns3 run scratch/first.cc --vis
报错,错误代码如下
assert failed. cond="uid != 0", msg="Assert in TypeId::LookupByName:
ns3::VisualSimulatorImpl not found", file=../src/core/model/type-
id.cc, line=388
Command ['/home/fabian/repos/ns-allinone-3.12.1/ns-3.12.1/build/debug/
examples/wireless/wifi-adhoc', '--
SimulatorImplementationType=ns3::VisualSimulatorImpl'] terminated with
signal SIGSEGV. Run it under a debugger to get more information (./waf
--run <program> --command-template="gdb --args %s <args>").
如果你确定自己已经装了visualizer库,那么问题就源于 ldd <program>
没有将 ns3-visualizer 列为程序链接到的库,即使 waf (waf -v) 或是ns3.py 使用的链接命令将 -lns3-visualizer 列为要链接的库。
这个似乎是系统底层的问题。
解决方法
python
在python程序中的所有import语句之后加上import ns.visualizer
即可。
C/C++
确保使用在visualizer库中定义的一些符号即可。例如
gjc@gjc-laptop:ns-3-dev$ hg diff examples/wireless/wifi-ap.cc
diff -r 159633363724 examples/wireless/wifi-ap.cc
--- a/examples/wireless/wifi-ap.cc Mon Oct 31 12:13:18 2011 +0000
+++ b/examples/wireless/wifi-ap.cc Mon Nov 07 11:27:03 2011 +0000
@@ -26,6 +26,7 @@
#include "ns3/config-store-module.h"
#include "ns3/wifi-module.h"
#include "ns3/athstats-helper.h"
+#include "ns3/pyviz.h"
#include <iostream>
@@ -116,6 +117,8 @@
int main (int argc, char *argv[])
{
+ { PyViz v; }
+
CommandLine cmd;
cmd.AddValue ("verbose", "Print trace information if true", g_verbose);
- 但是要注意linux的连接器
ld
有可能忽略那些实际上没有使用的链接库(比如说gcc的O3选项),这可能导致未知问题,所以不要优化程序。