如何解决编译过程中遇到ASN1C相关的问题
最近,在OAI的maillist交流中,发现有很大一部分人在同时使用老的Makefile和新的cmake。而在切换到新的编译环境时,没有及时把由旧的编译环境生成的结果清理掉。这就会报出一些变量未定义或者不匹配的错误。
比如 在进行oaisim编译过程中,就会报出下列的错误。
/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c: In function ‘do_MeasurementReport’:
/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c:2249:90: error: ‘MeasResults_t’ has no member named ‘measResultPCell’
measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrpResult=rsrp_s;
^
/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c:2250:90: error: ‘MeasResults_t’ has no member named ‘measResultPCell’
measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrqResult=rsrq_s;
^
make[3]: *** [CMakeFiles/RRC_LIB.dir/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c.o] Error 1
这就是由于已经编译的结果和现在的不匹配。
解决的办法就是
在目录targets/RT/USER下,执行 make cleanall 和 make cleanasn1,然后再重新编译就可以了。
感谢Lionel GAUTHIER提供的帮助。
/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c:2249:90: error: ‘MeasResults_t’ has no member named ‘measResultPCell’
measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrpResult=rsrp_s;
^
/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c:2250:90: error: ‘MeasResults_t’ has no member named ‘measResultPCell’
measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrqResult=rsrq_s;
^
make[3]: *** [CMakeFiles/RRC_LIB.dir/home/brix/openair4Gnewest/trunk/openair2/RRC/LITE/MESSAGES/asn1_msg.c.o] Error 1