Cross-Compile for ARM - NTP 4.1.1 OK, NTP 4.2.0a Errors

  • Follow


I'm cross-compiling NTP on a Red Hat 7.3 Linux box, targeted at an Arcom ARM-based embedded board, with the Acrom Embedded Linux (AEL) 3.7 (kernel 2.4.26) host environment installed.

With NTP 4.1.1 (original included in Arcom's AEL package, no known diffs from core NTP dist), all it takes is './configure --host=arm-linux' and 'make' to get a clean compile.

With ntp-stable-4.2.0a-20040617 and ntp-dev-4.2.0a-20040914, the './configure --host=arm-linux' and 'make' routine gets me a nearly immediate screen full of errors ...

   ... in directory libntp
   ... systime.c and/or a_md5encrypt.c
   ... /usr/include/bitsmathinline.h In function 'atan2' ... error: unknown register name st(1) in 'asm'
   ... (ditto the line just above for nearly every match function known to man ;)

Maybe I'm just not familiar enough with the options I need to feed to configure to get it to set up all the include paths correctly for a cross-compile environment?

-

Also, on a related topic, any suggestions for the best set of configure options / etc. to built and configure NTP for operation in a stand-alone environment?

We have a number of embedded processor boards that will be operating in the same box with a Trimble ThunderBolt GPS-disciplined clock board, and these systems will not be connected to any other servers or clients.  We want NTP to keep the Linux clock disciplined to the GPS time from the ThunderBolt, so we can use Linux/ACE timers for software scheduling, and so that we can fall back to the OS clock as a last resort if we lose the GPS.

-- 
Alex

0
Reply Alex 9/16/2004 11:33:53 AM

So the compiler you are invoking is arm-linux-gcc?

It looks like your toolchain is messed up.

H
0
Reply stenn 9/16/2004 9:04:44 PM


I have the same problem to cross-compile for PPC the NTP 4.2.0.
Because I have no idea about how ./configure works, I do the next to
cross-compile


1�. Configure
=============

execute ./configure with your options


2�. Modify ./config.status
=====================================

This file is created by ./configure and is executed as the last step by
../configute

a) find @CPPFLAGS@ in the file and delete "-I/usr/include" from the line
where @CPPFLAGS@ is defined
b) find @LDFLAGS@ in the file and delete "-L/usr/lib" from the line where
@LDFLAGS@ is defined

NOTE: If you use openssl, there is other two line as this for openssl

3�. Execute ./config.status
===================================

../config.status


4�. Modify Makefile files
===================================

a) find the string "AR = ar" in the Makefile files recursively and change
"ar" with you utility for cross-compile
(in my case "AR = ppc_8xx-ar")

b) open the file ./ntpdc/Makefile and do the next
 b1) find "cmp" (case sensitive, word only) y put "echo " before -> echo cmp
......
 b2) find "./ntpdc-layout" (case sensitive) y put "echo " before -> echo
../ntpdc-layout ....

../ntpdc-layout is an utility created when you execute "make" that check
something (i don't know what), but
it is not necessary. As you are cross-compiling, executing ./ntpdc-layout in
the host don't work.


5�. Build and install
=======================

make
make install

I hope this help you.



"Alex Madarasz" <alexmadaraszfree@earthlink.net> escribi� en el mensaje
news:mailman.25.1095342815.26599.questions@ntp.org...
>
> I'm cross-compiling NTP on a Red Hat 7.3 Linux box, targeted at an Arcom
ARM-based embedded board, with the Acrom Embedded Linux (AEL) 3.7 (kernel
2.4.26) host environment installed.
>
> With NTP 4.1.1 (original included in Arcom's AEL package, no known diffs
from core NTP dist), all it takes is './configure --host=arm-linux' and
'make' to get a clean compile.
>
> With ntp-stable-4.2.0a-20040617 and ntp-dev-4.2.0a-20040914, the
'./configure --host=arm-linux' and 'make' routine gets me a nearly immediate
screen full of errors ...
>
>    ... in directory libntp
>    ... systime.c and/or a_md5encrypt.c
>    ... /usr/include/bitsmathinline.h In function 'atan2' ... error:
unknown register name st(1) in 'asm'
>    ... (ditto the line just above for nearly every match function known to
man ;)
>
> Maybe I'm just not familiar enough with the options I need to feed to
configure to get it to set up all the include paths correctly for a
cross-compile environment?
>
> -
>
> Also, on a related topic, any suggestions for the best set of configure
options / etc. to built and configure NTP for operation in a stand-alone
environment?
>
> We have a number of embedded processor boards that will be operating in
the same box with a Trimble ThunderBolt GPS-disciplined clock board, and
these systems will not be connected to any other servers or clients.  We
want NTP to keep the Linux clock disciplined to the GPS time from the
ThunderBolt, so we can use Linux/ACE timers for software scheduling, and so
that we can fall back to the OS clock as a last resort if we lose the GPS.
>
> --
> Alex
>


0
Reply FJPSE 9/17/2004 3:49:25 PM

On Friday, September 17, 2004, 11:49:25 AM, FJPSE wrote:
> I have the same problem to cross-compile for PPC the NTP 4.2.0.
> Because I have no idea about how ./configure works, I do the next to
> cross-compile ...

Thanks for the detailed info - I'll give it a try ASAP!

;)


> 1�. Configure
> =============
>
> execute ./configure with your options
>
>
> 2�. Modify ./config.status
> =====================================
>
> This file is created by ./configure and is executed as the last step by
> ./configute
>
> a) find @CPPFLAGS@ in the file and delete "-I/usr/include" from the line
> where @CPPFLAGS@ is defined
> b) find @LDFLAGS@ in the file and delete "-L/usr/lib" from the line where
> @LDFLAGS@ is defined
>
> NOTE: If you use openssl, there is other two line as this for openssl
>
> 3�. Execute ./config.status
> ===================================
>
> ./config.status
>
>
> 4�. Modify Makefile files
> ===================================
>
> a) find the string "AR = ar" in the Makefile files recursively and change
> "ar" with you utility for cross-compile
> (in my case "AR = ppc_8xx-ar")
>
> b) open the file ./ntpdc/Makefile and do the next
>  b1) find "cmp" (case sensitive, word only) y put "echo " before -> echo cmp
> .....
>  b2) find "./ntpdc-layout" (case sensitive) y put "echo " before -> echo
> ./ntpdc-layout ....
>
> ./ntpdc-layout is an utility created when you execute "make" that check
> something (i don't know what), but
> it is not necessary. As you are cross-compiling, executing ./ntpdc-layout in
> the host don't work.
>
>
> 5�. Build and install
> =======================
>
> make
> make install
>
> I hope this help you.
>
>
>
> "Alex Madarasz" <alexmadaraszfree@earthlink.net> escribi� en el mensaje
> news:mailman.25.1095342815.26599.questions@ntp.org...
>>
>> I'm cross-compiling NTP on a Red Hat 7.3 Linux box, targeted at an Arcom
> ARM-based embedded board, with the Acrom Embedded Linux (AEL) 3.7 (kernel
> 2.4.26) host environment installed.
>>
>> With NTP 4.1.1 (original included in Arcom's AEL package, no known diffs
> from core NTP dist), all it takes is './configure --host=arm-linux' and
> 'make' to get a clean compile.
>>
>> With ntp-stable-4.2.0a-20040617 and ntp-dev-4.2.0a-20040914, the
> './configure --host=arm-linux' and 'make' routine gets me a nearly immediate
> screen full of errors ...
>>
>>    ... in directory libntp
>>    ... systime.c and/or a_md5encrypt.c
>>    ... /usr/include/bitsmathinline.h In function 'atan2' ... error:
> unknown register name st(1) in 'asm'
>>    ... (ditto the line just above for nearly every match function known to
> man ;)
>>
>> Maybe I'm just not familiar enough with the options I need to feed to
> configure to get it to set up all the include paths correctly for a
> cross-compile environment?
>>
>> -
>>
>> Also, on a related topic, any suggestions for the best set of configure
> options / etc. to built and configure NTP for operation in a stand-alone
> environment?
>>
>> We have a number of embedded processor boards that will be operating in
> the same box with a Trimble ThunderBolt GPS-disciplined clock board, and
> these systems will not be connected to any other servers or clients.  We
> want NTP to keep the Linux clock disciplined to the GPS time from the
> ThunderBolt, so we can use Linux/ACE timers for software scheduling, and so
> that we can fall back to the OS clock as a last resort if we lose the GPS.

-- 
Alex

0
Reply Alex 9/17/2004 8:35:42 PM

On Thursday, September 16, 2004, 5:04:44 PM, Harlan Stenn wrote:
>
> So the compiler you are invoking is arm-linux-gcc?
>
> It looks like your toolchain is messed up.

As far as I can tell, the ARM toolchain is OK. I re-built 4.1.1 from a clean
distribution using:

   ./configure --host=arm-linux
   make

and both completed without errors. I checked the ntpd with 'file' and it said
it was an ARM executable. Moved ntpd and ntpq to the target board, configured
with the NMEA ref clock driver and ntpd and ntpq ran fine. Unfortunately, the
NMEA ref clock driver I've been using as my 'reference' for testing (until I
have the new ThunderBolt driver finished) appears to be broken on 4.1.1 - it
appears to be getting valid $GPRMC sentences but throws a bad time event after
each one. This is one of the reasons I want to be running 4.2.0a+ instead, as
there have been a number of fixes to the NMEA ref clock driver since 4.1.1.

-- 
Alex

0
Reply Alex 9/17/2004 8:43:57 PM

I'm back from vacation now.  How can I help figure this out?  Are you
using the latest tarballs?  If not, what versions of the auto* tools
are you using?

H
0
Reply stenn 10/4/2004 11:03:33 PM

On Monday, October 4, 2004, 7:03:33 PM, Harlan Stenn wrote:
>
> I'm back from vacation now.  How can I help figure this out?  Are you
> using the latest tarballs?  If not, what versions of the auto* tools
> are you using?

Thanks for the follow-up ... and I owe the group a follow-up of my own.

I _did_ finally manage to get NTP stable 4.2.0a to build for the ARM platform,
with the help of the detailed hints from FJPSE, reading some Net docs on the
auto* tools and Canadian cross-compiling with them, and some NTP spelunking on
my own.  In the end I managed to get the process to work repeatedly without
requiring any mid-stream hand-editing of any files.

As soon as I get the ARM build fully tested and get out from underneath the
heavy load I'm carrying now, I'll post the details of what I did for all.

-- 
Alex

0
Reply Alex 10/5/2004 12:16:42 AM

./configure CC=/home/myuser/Programs/codesourcery_arm_none_linux_gnueabi_gcc/bin/arm-none-linux-gnueabi-gcc CFLAGS=-static --host=arm-none-linux-gnueabi --prefix=/home/myuser/Programs/ntp/ntp-dev-4.2.7p308/out

Felipe Nipo.

--
0
Reply fpnipo (1) 10/5/2012 5:52:46 PM

6 Replies
1094 Views

(page loaded in 0.089 seconds)

Similiar Articles:













7/20/2012 9:33:47 AM


Reply: