简介:NTP(Network Time Protocol)是指网络时间协议,是PC、手持设备、其他终端或者服务器来校准时间的协议。如,windows和linux系统都有对应的时间校准,使用的都是NTP协议。NTP协议的基于C来实现,代码跨平台,可在windows、linux以及其他平台上编译运行。NTP的官方协议实现库,当前最新版本是4.2.8p9。NTP4.2.8p9出于安全性的考虑,该版本依赖于openssl的库,经笔者试验openssl 0.98的版本支持不了,用openssl1.1.0e的版本可以支持。
1.准备
1) openssl: openssl 1.1.0。(该交叉编译的文章见“CYGwin下交叉编译openssl1.1.0e”)
2) cygwin 32
3) 第三方编译工具链
2.编译配置
#./configure --host=arm-linux --prefix=/usr/local/arm-ntp --with-yielding-select=no CFLAGS=-I/usr/local/arm/3.3.4/arm-linux/sys-root/usr/include LDFLAGS="-L/usr/local/arm/3.3.4/arm-linux/sys-root/lib -L/usr/local/arm/3.3.4/arm-linux/sys-root/usr/lib" --with-openssl-libdir=/usr/local/arm-ssl/lib --with-openssl-incdir=/usr/local/arm-ssl/include
下面就configure的配置参数一一做以说明:
1)其中--host=arm-linux指定目标要运行的环境,arm-linux实际上交叉编译器的前缀,configure脚本会识别到arm-linux关键字,会将目标系统识别为linux的arm平台。
2)--prefix=/usr/local/arm-ntp 此参数指明,编译后运行make install将会将生成的目标程序、库、帮助、配置等安装到这个目录。
3) CFLAGS=-I/usr/local/arm/3.3.4/arm-linux/sys-root/usr/include指明在编译时的参数,-I是指明要包含的头文件目录,就是交叉编译工具链的头文件目录。
4)LDFLAGS="-L/usr/local/arm/3.3.4/arm-linux/sys-root/lib -L/usr/local/arm/3.3.4/arm-linux/sys-root/usr/lib" 指明链接参数,-L指明链接库所在的目录,就是交叉编译工具链的库文件目录。
5)--with-openssl-libdir=/usr/local/arm-ssl/lib 指明openssl库的对应路径。
6)--with-openssl-incdir=/usr/local/arm-ssl/include指明openssl头文件的对应路径。
上面任何一个配置不好,都会有编译或者链接的问题。
3.编译
#make
#make install
在目前生成的过程中libntp、sntp、ntpdate等可以正常编译链接,但是在ntpd编译出现问题,但是和openssl无关是和limits.h头文件相关,可能某个配置问题,尚在解决中。