惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
B
Blog
罗磊的独立博客
GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
The GitHub Blog
The GitHub Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
有赞技术团队
有赞技术团队
WordPress大学
WordPress大学
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏

博客园 - 普罗大众

debug的一个问题 phy_simulators之nr_dlsim之4层接收的优化 phy_simulators之nr_dlsim之一个bug phy_simulators之nr_dlsim开始 phy_simulators之nr_pbchsim之PBCH解码 phy_simulators之nr_pbchsim之PBCH-DMRS检测 phy_simulators之nr_pbchsim之仿真的局限 phy_simulators之nr_pbchsim之一些结构 phy_simulators之nr_pbchsim之SSS检测 phy_simulators之nr_pbchsim之信道 phy_simulators之nr_pbchsim之初始同步 phy_simulators之nr_pbchsim之发送端 phy_simulators之nr_pbchsim之PSS检测 phy_simulators之dlsim.c debug方法三:printf debug方法二:用vs code debug方法一:直接用gdb命令 phy_simulators的编译生成方法三:CMakePresets.json phy_simulators的编译生成方法二:手动写cmake脚本 phy_simulators的编译生成方法一:build_oai --phy_simulators AI App的使用感觉 从“图像视频编码”到“通信物理层” MAC pc + Ubuntu + OAI 原来Fourier是法国的,怪不得法国小波分析这么牛 整理心情
open air interface的phy_simultors编译过了
普罗大众 · 2026-02-15 · via 博客园 - 普罗大众

下载好OAI便着急编译了,对于小白真是历经磨难。。。

1. Openairinterface5g/cmake_targets里有build_oai,网上说就用它,./build_oai/phy_simulators

2. 不错所料,立马出错,看到错就网上狂搜,好些都是缺了配套软件,一顿install

sudo apt install cmake

sudo apt-get install build-essential

sudo apt install ccache

sudo apt-get install pkg-config

3. 最大的坑来了,asn1c,后来知道了这就是大名鼎鼎的rrc里面的“人话”的来由。“人话”是说相比物理层规范,ASN.1已经很像人话了。 想当然地安装sudo apt install asn1c,提示已经是最新版本,其实是默认稳定版0.9.28而已,OAI的大牛们尽然去用了开发版0.9.29,折腾死我了。

按错误提示加了参数: ./build_oai —phy_simulators —cmake-opt -DASN1C_EXEC=/usr/bin/asn1c 还是不行。

进一步发现脚本CMakeList会检查asn1c -gen-APER,但0.9.28的asn1c只有gen-PER,所以注释了这些检查。当然备份脚本,胆子小。

# check_option(${ASN1C_EXEC} -gen-APER ASN1C_EXEC)

# check_option(${ASN1C_EXEC} -no-gen-UPER ASN1C_EXEC)

# check_option(${ASN1C_EXEC} -no-gen-JER ASN1C_EXEC)

# check_option(${ASN1C_EXEC} -no-gen-BER ASN1C_EXEC)

# check_option(${ASN1C_EXEC} -no-gen-OER ASN1C_EXEC)

但是,还是会有报警-gen-UPER: Invalid argument,可能还是有地方调用了-gen-UPER,但也没关系了,因为asn1c应该是用于rrc,编译物理层仿真代码其实用不着rrc。

更麻烦的是报错:fatal error: LTE_SystemInformationBlockType2.h: No such file or directory。感觉是lte rrc相关的问题,对phy simulator怕是影响不大,于是注释掉:

# add_library(lte_rrc

# ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg.c

# ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c)

# target_link_libraries(lte_rrc PUBLIC asn1_lte_rrc)

# target_link_libraries(lte_rrc PRIVATE nr_rrc) 

但是,是有其他.h文件的缺失,应该还是asn1c的版本问题,导致没有生成一些.h文件。看来还是要支持-gen-APER、-gen-UPER才行,还是要最新版的asn1c,怎么办?

4. 尝试下出错提示里的./build_oai -I,好像是编译前安装必要的软件包,其中包括了asn1c。悲剧的是它强制从github里克隆最新的asn1c,刚好网络问题,github老是连不上,偶尔连上了也中途断了。

再搜一下,发现网上一国内大牛回答了这个问题:https://zhuanlan.zhihu.com/p/2002730960127534986

明白了几个事情:强制克隆最新的asn1c,在cmake_targets/tools/build_helper里,除了asn1c外还有个simde,一定要装上asn1c的0.9.29版本。

决定,还是要从github入手。。。浏览器克隆https://github.com上的东西老是不稳定,连用浏览器打开https://github.com/mouse07410也不行,怒了,网络一顿狂搜,试了一些方法,最后通过修改host的几个网址为ping到的IP然后偶尔在一处网络里成功编译过了./build_oai -I,好开心啊,感觉软件包都应该就绪了。

5. 但是,再编译./build_oai/phy_simulators还是不行,原来系统默认asn1c还是0.9.28版本(可能新生成的0.9.29没有覆盖掉它),试验了几次一狠心把它给remove掉了,这样不会干扰我判断了,然后继续./build_oai -I强制安装,经过几次不懈努力,终于又一次过了(都是一堆网络问题,过了应该也是偶然),终于,在/tmp/asn1c里我有0.9.29的asn1c了。。。

6. 将0.9.29的asn1c拷贝到/usr/bin里,这样系统默认的只有0.9.29 asn1c了。还好simde比较简单,好像就是一堆头文件,放哪都行。

7. 终于的终于,./build_oai/phy_simulators编译成功了,看着满屏幕的100%,很欣慰啊,呵呵

8. 注:中间还是登上过:git clone https://github.com/mouse07410/asn1c.git和git clone https://github.com/simd-everywhere/simde-no-tests.git,但不会进一步操作了,还是调用./build_oai -I算了。。。

9. 注:之前对脚本CMakeList的注释要打开哦,不要乱来

10. 注:编译./build_oai/phy_simulators是https://gitlab.eurecom.fr/oai/openairinterface5g/blob/master/doc/BUILD.md#overview的官方指示