









下载好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的官方指示
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。