大家知道我们团队编译过很多产品的ARM版本,对用户来说,多一种编译方式也是多一种选择,所以我们一直在拓宽TSINGSEE青犀视频全线产品的运用范围。近期TSINGSEE青犀视频研发团队编译了libEasyRTSPServer的ARM版本,在此过程中,我们遇到了编译错误undefined reference to `uselocale’。

libEasyRTSPServer编译ARM版本出现log提示:
undefined reference to uselocale' undefined reference tofreelocale’
In function Locale::Locale(char const*, LocaleCategory)': undefined reference tonewlocale’
undefined reference to `uselocale’

我尝试了用nm命令查看so的符号表,看看这个函数是否正常,于是nm -D 库文件,查看了下,结果函数正常的。然后想到C++ 调用C存在混编问题,于是在编译选项加上 -lstdc++,结果还是报错。
最终沿着混编问题走下去,我找到了原因,这些函数的使用都有宏定义控制
针对这些宏的说明,在对应的local.hh。

如果系统中没有这些函数,则需要增加-DLOCALE_NOT_U

本文讲述了TSINGSEE团队在编译libEasyRTSPServer ARM版本时遇到的`undefined reference to` uselocale'等错误,通过排查混编问题和理解locale宏,发现需添加-DLOCALE_NOT_USED宏定义,成功解决了编译问题。博主将分享详细排查过程和后续计划。
最低0.47元/天 解锁文章
5596

被折叠的 条评论
为什么被折叠?



