最近做了一下ntp的移植,把心得和大家共享一下,雖然網上有很多關于ntp的移植文件,但是都很簡單,好像沒有遇到任何的問題,可是我卻遇到了不少啊。
第一步:設定交叉編譯器的路徑
初學者經常漏掉的一步,萬一沒設定就是以主機的gcc在編,變成主機執行了。
export PATH=:$PATH:/home/jlass/***
***就是你們自己的交叉編譯器的路徑
第二步:編譯ntp
下載源文件,解壓后進入文件夾,新建一個source文件夾(我個人的習慣而已)
注:以3.4.1個arm-linux-gcc是可以直接編譯通過的,可是我的arm-linux-gcc是我自己用4.2.4版本編的,有一些問題。
。/configure --prefix=http://www.eda-china.com/home/jlass/marwell/rootfs/ntp-4.2.4p4/source/ --exec-prefix=http://www.eda-china.com/home/jlass/marwell/rootfs/ntp-4.2.4p4/source/ --host=arm-linux
注:網上的參考文件還有--enable-all-clocks --enable-parse-clocks參數,但我沒加,也沒覺得有什么問題。
make
錯誤一:
/home/jlass/marwell/rootfs/ntp-4.2.4p4/libntp/。/。。/libisc/ifiter_ioctl.c:487: undefined reference to `index‘
/home/jlass/marwell/rootfs/ntp-4.2.4p4/libntp/。/。。/libisc/ifiter_ioctl.c:487: undefined reference to `index’
檢查源文件可發現index應該是某種算法,可是這個版本的gcc可能沒有了。
查看gcc中的string.h文件能看到# define index(s,c) strchr((s), (c))字段
我覺得strchr的算法和index應該是一樣的,所以在ifiter_ioctl.c中用strchr替代了index。
注:這里我偷懶了,應該有能好的解決方法
錯誤二:
tickadj.c:185:22: error: sys/var.h: No such file or directory
查看gcc的include/sys/目錄下有個socketvar.h文件名字最接近了,直接把tickadj.c中的# include 改成# include
注:估計直接//注釋掉應該也可以
錯誤三:
tickadj.c:436: error: ‘txc’ undeclared (first use in this function)
查看436行,tick = PRESET_TICK;沒看到txc啊,奇怪,仔細一查發現另一個文件里定義了#define PRESET_TICK txc.tick
在查看看tickadj.c文件的開頭有
#ifdef HAVE___ADJTIMEX/* Linux */
#include
struct timex txc;
估計是這個版本的gcc沒定義HAVE___ADJTIMEX引起的,不管了,把
#include
struct timex txc;
放到最上面去。
總算是編譯通過了。
make install
第三步:安裝ntp
去source/bin下把需要的文件拷到開發板上吧
注:source/lib下沒有文件,不需要拷。
在開發板的etc下新建ntp.conf文件,并寫入
restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap //根據自己的實際情況更改
server 127.127.1.0 //以本機作為時間服務器
fudge 127.127.1.0 stratum 5 //優先級為5
其實關鍵就是server 127.127.1.0(不要錯寫成127.0.0.1了)這一句,其他的都可以不寫,直接使用默認值。
然后執行ntpd,ntpd服務就起來了。
注:實際需要等待幾分鐘,ntpd服務才真正起來,所以不要太著急了
在另一塊板子上執行ntpdata serverIP,就能實現時間同步了。
注:如果你的板子已經起了ntpd,再運行ntpdata是會有錯誤提示ntpdate[2006]: the NTP socket is in use, exiting
另外:我在第一次處理的時候不小心把3.4.1編譯生成的ntpd考到4.2.4的板卡上,執行時出現-sh:ntpd not found的錯誤,所以如果出現相同的錯誤請確認你所使用的交叉編譯器和你板卡上的arm-linux-gcc是否統一。
-
開發板
+關注
關注
25文章
4959瀏覽量
97214 -
編譯器
+關注
關注
1文章
1618瀏覽量
49057 -
NTP
+關注
關注
1文章
158瀏覽量
13886
發布評論請先 登錄
相關推薦
評論