在MacBook的Ubuntu 22.04上安装ns-allinone-3.37遇错误求助
解决ns-3.37安装时cmake版本解析错误问题
问题场景
在MacBook上的Ubuntu 22.04系统中安装ns-3.37,执行以下命令:
./build.py --enable-examples --enable-tests
触发如下错误:
Entering directory `/media/psf/Home/Desktop/ns-allinone-3.37/./ns-3.37' => /usr/bin/python3 ns3 configure --enable-examples --enable-tests Traceback (most recent call last): File "/media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37/ns3", line 1546, in <module> main() File "/media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37/ns3", line 1435, in main configuration_step(current_cmake_cache_folder, File "/media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37/ns3", line 927, in configuration_step cmake, _ = cmake_check_version() File "/media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37/ns3", line 777, in cmake_check_version if parse_version(version) < parse_version("3.10.0"): File "/media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37/ns3", line 765, in parse_version version = tuple(map(int, version)) ValueError: invalid literal for int() with base 10: '0-rc4' Traceback (most recent call last): File "/media/psf/Home/Desktop/ns-allinone-3.37/./build.py", line 155, in <module> sys.exit(main(sys.argv)) File "/media/psf/Home/Desktop/ns-allinone-3.37/./build.py", line 146, in main build_ns3(config, build_examples, build_tests, args, build_options) File "/media/psf/Home/Desktop/ns-allinone-3.37/./build.py", line 65, in build_ns3 run_command(cmd) # ns3 configure ... File "/media/psf/Home/Desktop/ns-allinone-3.37/util.py", line 25, in run_command raise CommandError("Command %r exited with code %i" % (argv, retval)) util.CommandError: Command ['/usr/bin/python3', 'ns3', 'configure', '--enable-examples', '--enable-tests'] exited with code 1
已安装所有依赖环境:
sudo apt install build-essential autoconf automake libxmu-dev g++ python3 python3-dev pkg-config sqlite3 cmake python3-setuptools git qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gsl-bin libgsl-dev libgslcblas0 wireshark tcpdump sqlite sqlite3 libsqlite3-dev libxml2 libxml2-dev libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake python3-pip libxml2 libxml2-dev libboost-all-dev
问题原因
错误根源在于ns3脚本中的parse_version函数无法处理带后缀的cmake版本号(例如x.x.x-rc4格式),尝试将包含非数字字符的版本段转换为整数时失败。
解决方案
方案一:修改ns3脚本的版本解析函数
- 进入ns-3.37目录并打开ns3脚本:
cd /media/psf/Home/Desktop/ns-allinone-3.37/ns-3.37 nano ns3
- 找到
parse_version函数,将原代码:
def parse_version(version): version = version.split('.') version = tuple(map(int, version)) return version
替换为:
def parse_version(version): # 去除版本号中的后缀部分(如-rc4) version = version.split('-')[0] version = version.split('.') version = tuple(map(int, version)) return version
- 保存文件(按
Ctrl+O,回车确认,再按Ctrl+X退出),重新执行安装命令:
./build.py --enable-examples --enable-tests
方案二:升级cmake到稳定正式版
如果不想修改脚本,可以将当前的预发布版cmake替换为稳定版:
sudo apt remove --purge cmake sudo apt update sudo apt install cmake --install-recommends
安装完成后重新执行build命令即可。
内容的提问来源于stack exchange,提问作者万至秦
相关产品推荐
相关产品推荐

