在FreeBSD系统编译libosmocore出现osmo_timerfd相关链接错误如何解决
问题原因
你遇到的链接错误是因为timerfd是Linux内核特有的计时API,FreeBSD原生系统没有提供对应的实现。libosmocore 1.5.2版本默认会自动检测并启用timerfd功能,编译阶段不会报错,但链接阶段就会出现对应函数未定义的问题。
解决方案
优先选择关闭timerfd功能的方案,兼容性最好,操作步骤如下:
- 第一步:清理之前的编译残留,避免旧配置干扰
gmake distclean
- 第二步:重新生成配置并添加禁用timerfd的参数,完整配置命令如下:
autoreconf -fi ./configure --disable-pcsc --disable-libmnl --disable-gb --disable-timerfd
- 第三步:使用GNU make重新编译即可,FreeBSD自带的BSD make不兼容libosmocore的Makefile规则,必须使用gmake命令:
gmake -j$(sysctl -n hw.ncpu) gmake install
如果需要使用timerfd相关功能,也可以先安装FreeBSD的timerfd兼容层软件包linux-timerfd,再在configure阶段添加对应头文件和库的搜索路径即可,但该方案兼容性不如直接禁用timerfd稳定。
验证方法
编译完成后执行osmo-arfcn --version,如果正常输出版本信息则说明编译链接成功。
内容的提问来源于stack exchange,提问作者atari83
相关产品推荐
相关产品推荐

