海思编译安装ntp服务端

海思编译安装ntp服务端

由于工作需求,需要在海思arm平台搭建ntp服务器,在ntp的移植过程中遇到了一些坑,网络上的一些教程都有各种各样的坑,我把自己的操作记录下来。
操作系统: Ubuntu 22.04 LTS
开发板 : hisi3531a


1.说明

网络时间协议Network Time Protocol(NTP) 是一种确保时钟保持准确的方法。如果可以访问互联网,只需安装ntp的客户端软件到互联网上的公共ntp服务器自动修正时间即可.具体说明可参考百科NTP.

2.准备工作

由于ntp在依赖openssl库和libevent库,在交叉编译ntp之前需要先交叉编译openssl.
libevent库包含在ntp源码中,没有必要单独下载安装。
注意:新版本的ntp依赖1.1.1版本的openssl!!!

ntp下载地址

ntp-dev-4.3.99
openssl 1.1.1b

3.开始编译

3.1解压
mkdir -p ~/work 
cd ~/work
tar -xvf ntp-dev-4.3.99.tar.gz
tar -xvf openssl-1.1.1b.tar.gz
3.2 交叉编译openssl
$ cd openssl-1.1.1b/
$ ./config no-asm -shared --prefix=$(pwd)/install no-async  \
--cross-compile-prefix=arm-hisiv300-linux-uclibcgnueabi-

上述步骤只是生成了Makefile,还没有设置,需要手动设置.
用编辑器打开Makefile,搜索"-m64",总共找到两处,删除之

make -j4
make install

一段时间后就会完成.此时在当前目录下就会产生一个 install 文件夹,编译出来的产物全部在里面了.

openssl交叉编译完成.

3.3 交叉编译ntp
cd ../ntp-dev-4.3.99

把openssl的头文件拷过来,也可以在configure时用--with-openssl-incdir + =../openssl-1.1.1b/install/include指定openssl的头文件

cp -r ../openssl-1.1.1b/install/include/* include/

配置:
1.一定要有–enable-local-libevent 选项,不然会报头文件和链接错误。
2.openss库说明:LDFLAGS=-L$(pwd)/../openssl-1.1.1b/install/lib指定openssl的库文件也可以通过--with-openssl-libdir=$(pwd)/../openssl-1.1.1b/install/lib指定
3.网上很多教程上的CC=arm-linux-gcc可以不用,因为host选项已经指定环境了

./configure --prefix=$(pwd)/install \
--exec-prefix=$(pwd)/install \
--host=arm-hisiv300-linux-uclibcgnueabi \
-with-yielding-select=yes \
LDFLAGS=-L$(pwd)/../openssl-1.1.1b/install/lib \
--without-sntp \
--enable-local-libevent

编译:

make -j4
make install

耐心等待一段时间后,编译完成,编译的产物在生成的 install/ 文件夹里

3.4 遇到问题

1.work_thread.c:45:57: error: missing binary operator before token "(" 45 | #if defined(PTHREAD_STACK_MIN) && THREAD_MINSTACKSIZE < PTHREAD_STACK_MIN
交叉编译工具设置错误。
2.致命错误: openssl/bn.h:没有那个文件或目录
openssl的头文件没有拷贝过来,运行cp -r ../openssl-1.1.1b/install/include/* include/

3.main.c:3:25: 致命错误: event2/util.h:没有那个文件或目录 #include <event2/util.h>
在configure的时候没有开启libevent模块,在configure时加上 --enable-local-libevent

4测试方法

4.1服务端

1.使用配置文件ntp.conf

#restrict default nomodify notrap noquery  
restrict 127.0.0.1  
restrict 192.168.120.0 mask 255.255.255.0 nomodify notrap  
server  127.127.1.0        # local clock  
fudge   127.127.1.0  stratum 5  
driftfile /var/lib/ntp/drift  
broadcastdelay   0.008  
keys                     /etc/ntp/keys  

2.服务端运行:./ntpd -c ./ntp.conf

4.2客户端

1.15分钟后运行

sudo ntpdate 192.168.120.10

正常返回
19 Sep 12:01:00 ntpdate[25526]: step time server 192.168.120.10 offset -266937453.381658 sec
测试成功

如果出现 no server suitable for synchronization found
先检查配置文件的ip是否设置正确。再过几分钟后再试,ntpd服务端启动后初始化要几分钟的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q472599451

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值