在服务器x86架构上编译NTP软件时,没有发现任何问题,但是使用交叉编译工具链编译NTP时,却发现错误,具体过程如下:
1.首先先要到处交叉编译工具链,也就是修改/etc/environment中的内容,将交叉编译工具链的路径添加到最后,最后执行source /etc/environment即可,即可在当前终端直接使用交叉编译工具链的内容,使用Tab来补全从而查看是否生效。
2.然后执行配置命令
./configure --prefix=/usr/local/ntp2 --host=mips64-nlm-linux --enable-all-clocks --enable-parse-clocks
3.执行编译命令
make
在编译时出现错误,错误内容如下:
编译错误大概意思是:读取当前目录下的libntp/libntp.a的头部报错说是一个错误的格式,因此我们找到这个libntp.a文件,使用file命令查看这个文件的格式,结果发现其格式是x86架构,显然是错误的,因为我们需要的是mips架构的,当执行完configure配置文件后,就会生成一些配置文件(会根据configue后面的参数来生成相应的信息),比如生成Makefile文件,因此我们打开Makefile文件,找到其CC变量,发现该变量被赋值为gcc,由此找到错误原因,就是没有使用交叉编译工具链导致的,使用.configure -h来查看如何指定交叉编译工具,找到直接跟上CC=mips64-nlm-linux-gcc即可。
./configure --prefix=/usr/local/ntp2 --host=mips64-nlm-linux --enable-all-clocks --enable-parse-clocks CC=mips64-nlm-linux-gcc
4.make install
新BUG,在第三步骤中,当执行
./configure --prefix=/usr/local/ntp2 --host=mips64-nlm-linux --enable-all-clocks --enable-parse-clocks CC=mips64-nlm-linux-gcc
命令时,出现如下图中的错误。