Linux Netopeer2 编译指南

Linux Netopeer2 编译指南

由于项目需求,需要使用基于Netopeer2的SDN,因此在Linux平台编译本地Netopeer2作为本地开发调试使用。一路走来踩了不少坑,现总结编译步骤如下:

Netopeer2环境

系统环境

VirtualBox平台 Ubuntu22虚拟机
在这里插入图片描述

ps: 我之前使用Ubunt20编译,结果发现apt 包中带的许多辅助lib版本较低,不符合Netopeer2相关lib编译需求。后续基于尝试基于Ubuntu20进行源码编译安装,但在编译libssh时遇到了一些问题,于是换为Ubuntu22。

GCC版本

在这里插入图片描述

G++版本

在这里插入图片描述

CMAKE版本

在这里插入图片描述

ps: 此虚拟机为项目新建虚拟机,所有编译工具均使用** sudo apt install xx **安装

Netopeer2编译

前置步骤

  1. 下载Netopeer2所需辅助lib文件
    • 查看Netopeer2 README文件,可知需libyang、libnetconf2、sysrepo三个前置lib文件:在这里插入图片描述
    • 直接从README链接点进去下载就好了,我分别下载了他们的最新版本:
      在这里插入图片描述
  2. 安装pkg-config包管理器
    • sudo apt install pkg-config -y
      • ps: 由于后续Netopeer2编译时需要使用CMake中的find模块进行lib库查找,为了避免后续重新install文件,所以预先装上。我遇到的的情形如下在这里插入图片描述
  3. 安装辅助lib
    1. libyang所需lib
      • sudo apt install libcmocka-dev -y
        • 这个库使用来做后续Netopeer2 test的,需要使用
      • sudo apt install libpcre2-dev -y
    2. libnetconf2所需lib
      • sudo apt install libssl-dev -y
      • sudo apt install libssh-dev -y
      • sudo apt install libpam0g-dev -y
      • sudo apt install curl libcurl4-openssl-dev -y
    3. sysrepo所需lib
      • sudo apt install doxygen -y
      • sudo apt install graphviz -y
      • sudo apt install libsystemd-dev -y
      • 以上三个lib库是用于生成sysrepo doc的,如果不需要也可以不安装

至此所有依赖已经安装完毕,下面按libyang、libnetconf2、sysrepo的readme文件进行编译即可。
注意,在源码编译时,编译有先后顺序,即libyang --> libnetconf2 --> sysrepo

编译libyang、libnetconf2、sysrepo

  1. mkdir build ; cd build
  2. cmake ..
  3. make
  4. sudo make install

这三个lib都可以按上述步骤编译、安装.请留意在安装时有没有此LOG信息(以libnetconf2为例):
在这里插入图片描述

将lib库添加到系统lib中

sudo ln -s /usr/local/lib/libsysrepo.so.7 /lib/
sudo ln -s /usr/local/lib/libnetconf2.so.4 /lib/
sudo ln -s /usr/local/lib/libyang.so.2 /lib/

最后系统的链接关系如下图:
在这里插入图片描述

查看当前lib库是否正确

使用pkg-config --modversion lib + tab自动补全,可以看到lib库红框标出
在这里插入图片描述
在这里插入图片描述
此时表明pkg-config已经就绪了。

编译Netopeer2

```
mkdir build ; cd build
cmake ..
make
sudo make install
```

安装完成后,输入netopeer2出现如下补全即证明安装成功:
在这里插入图片描述

Netopeer2验证

  1. 启动netopeer2-server,sudo netopeer2-server -d -v 2
    在这里插入图片描述
    启动成功

  2. 尝试同时启动netopeer2-server和netopeer2-cli,先启动服务端后,再新开窗口启动客户端,截图如下:
    在这里插入图片描述
    在这里插入图片描述

  3. 使用netopeer2-cli连接到netopeer2-server:
    在这里插入图片描述

    • 此处我使用的账户和密码名和登陆的用户密码名相同

    在这里插入图片描述

  4. 使用cli获取当前运行数据
    在这里插入图片描述
    可以看到客户端和服务端均正常运行了,证明Netopeer2环境已经就绪,后续可以尝试相关功能开发。

  5. 进入netopeer2编译目录,跑一下Netopeer2 test

    cd ./build/
    rm -rf ./*
    cmake -DENABLE_TESTS=ON .. 
    make
    make test
    

    结果如下:
    在这里插入图片描述
    在这里插入图片描述
    后续可以再重新install一下,不过我只是想看下test结果,所以此处我没有重新install

Netopeer2踩坑

编译时

  1. 由于没有预先装pkg-config,导致后期编译netopeer2时找不到依赖库。
    • 解决办法,重新编译三个依赖库,再进行make install
  2. 编译三个依赖库时提示缺少辅助库
    • 解决办法,参见编译前准备

一般来说遇到的都是缺少编译依赖库,根据cmake报错提示安装即可,较为好解决。

验证时

  1. 验证netopeer2-server和netopeer2-cli交互时,cli使用root用户登陆,无法与server建立连接

    • 搜索了一下,好像由于ubuntu中默认是没有root用户的,因此需要使用你登陆系统的用户名和密码连接,连接命令如下connet --host localhost --port 830 --login lwj
      在这里插入图片描述
      ps:使用help命令可以查看cli支持的操作
      在这里插入图片描述
  2. 在开启netopeer2-server时,出现

    [ERR]: SR: Failed to open mod shared memory (Permission denied).
    [ERR]: SR: Caused by kernel parameter "fs.protected_regular", which must be "0" (currently "2").
    

    在这里插入图片描述

    解决办法:

    • 进入root用户
    • 执行echo 0 > /proc/sys/fs/protected_regular
    • exit,再次重启netopper2-server即可
      在这里插入图片描述

    原因:

    • github上看netopeer2官方对此问题的答复,好像是由于新版ubuntu的新特性引起的,他们也不知道原因。

参考链接

  1. Netopeer2的一些辅助库安装参考
  2. Netpeer2的环境搭建
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上使用CMake进行交叉编译PySide2,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了CMake和交叉编译工具链。根据您的目标平台,可能需要安装特定的交叉编译工具链。例如,在交叉编译ARM平台的情况下,您可能需要安装ARM交叉编译工具链。 2. 创建一个用于构建PySide2的目录,并进入该目录: ``` mkdir build cd build ``` 3. 设置交叉编译工具链: ``` export CC=<path_to_cross_compiler> export CXX=<path_to_cross_compiler> ``` 其中,`<path_to_cross_compiler>`是您安装的交叉编译工具链的路径。 4. 使用CMake生成Makefile,并指定交叉编译相关的参数: ``` cmake \ -DCMAKE_SYSTEM_NAME=<target_system_name> \ -DCMAKE_C_COMPILER_WORKS=1 \ -DCMAKE_CXX_COMPILER_WORKS=1 \ -DCMAKE_INSTALL_PREFIX=<install_prefix> \ <path_to_pyside2_source> ``` 其中,`<target_system_name>`是目标系统的名称(如arm-linux-gnueabi),`<install_prefix>`是PySide2安装的目标路径,`<path_to_pyside2_source>`是PySide2源代码的路径。 5. 运行make命令进行交叉编译: ``` make ``` 6. 编译完成后,您可以将生成的库文件和相关文件复制到目标系统上,并在目标系统上进行使用。 请注意,交叉编译可能涉及到更多的配置和设置,具体步骤可能因您的目标平台和工具链而有所不同。确保按照PySide2官方文档提供的指南进行操作,并根据需要进行调整。 如果您遇到任何问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值