Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
<== Date ==> <== Thread ==>

Subject: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux
From: "marco_hair" <marco_hair@163.com>
To: tech-talk@aps.anl.gov
Date: Mon, 26 Jun 2006 16:44:11 +0800 (CST)
hi,all:
 
  I am trying to compile EPICS base on our new device. It has a Intel XScale IXP-422 266Mhz RISC CPU and Monta Vista linux as embedded OS. Gcc cross compiler is like this:
mxscaleb-gcc (GCC) 3.3.2                                                                              
Copyright (C) 2003 Free Software Foundation, Inc.                                                     
This is free software; see the source for copying conditions.  There is NO                            
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                           
I defined a new target archiecture as linux-ixp422. When I tried to compile the target, I got the following message:
[root@oracle.sinap.ac.cn]:/usr/local/epics/base>make linux-ixp422
make -C configure linux-ixp422
make[1]: Entering directory `/usr/local/epics/base-3.14.8.2/configure'
make -C O.linux-ixp422 -f ../Makefile TOP=../.. T_A=linux-ixp422
make[2]: Entering directory `/usr/local/epics/base-3.14.8.2/configure/O.linux-ixp422'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/epics/base-3.14.8.2/configure/O.linux-ixp422'
make[1]: Leaving directory `/usr/local/epics/base-3.14.8.2/configure'
make -C src linux-ixp422
make[1]: Entering directory `/usr/local/epics/base-3.14.8.2/src'
make -C makeBaseApp linux-ixp422
make[2]: Entering directory `/usr/local/epics/base-3.14.8.2/src/makeBaseApp'
make -C O.linux-ixp422 -f ../Makefile TOP=../../.. T_A=linux-ixp422
make[3]: Entering directory `/usr/local/epics/base-3.14.8.2/src/makeBaseApp/O.linux-ixp422'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/makeBaseApp/O.linux-ixp422'
make[2]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/makeBaseApp'
make -C makeBaseExt linux-ixp422
make[2]: Entering directory `/usr/local/epics/base-3.14.8.2/src/makeBaseExt'
make -C O.linux-ixp422 -f ../Makefile TOP=../../.. T_A=linux-ixp422
make[3]: Entering directory `/usr/local/epics/base-3.14.8.2/src/makeBaseExt/O.linux-ixp422'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/makeBaseExt/O.linux-ixp422'
make[2]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/makeBaseExt'
make -C libCom linux-ixp422
make[2]: Entering directory `/usr/local/epics/base-3.14.8.2/src/libCom'
make -C O.linux-ixp422 -f ../Makefile TOP=../../.. T_A=linux-ixp422
make[3]: Entering directory `/usr/local/epics/base-3.14.8.2/src/libCom/O.linux-ixp422'
/usr/local/mxscaleb/bin/mxscaleb-gcc -c        -DDONT_USE_POSIX_THREAD_PRIORITY_SCHEDULING   -D_ARM_  -DUNIX  -D_BSD_SOURCE -Dlinux  -D_REENTRANT -ansi  -O3  -Wall          -fPIC -I. -I.. -I../../../src/libCom/bucketLib -I../../../src/libCom/ring -I../../../src/libCom/calc -I../../../src/libCom/cvtFast -I../../../src/libCom/cppStd -I../../../src/libCom/cxxTemplates -I../../../src/libCom/dbmf -I../../../src/libCom/ellLib -I../../../src/libCom/env -I../../../src/libCom/error -I../../../src/libCom/fdmgr -I../../../src/libCom/freeList -I../../../src/libCom/gpHash -I../../../src/libCom/logClient -I../../../src/libCom/macLib -I../../../src/libCom/misc -I../../../src/libCom/osi -I../../../src/libCom/taskwd -I../../../src/libCom/timer -I../../../src/libCom/tsDefs -I../../../include/os/Linux -I../../../include       -I/usr/local/mxscaleb/armv5b-linux/include  ../../../src/libCom/osi/os/posix/osdThread.c
../../../src/libCom/osi/os/posix/osdThread.c: In function `start_routine':
../../../src/libCom/osi/os/posix/osdThread.c:307: warning: implicit declaration of function `sigfillset'
../../../src/libCom/osi/os/posix/osdThread.c:308: error: `SIG_SETMASK' undeclared (first use in this function)
../../../src/libCom/osi/os/posix/osdThread.c:308: error: (Each undeclared identifier is reported only once
../../../src/libCom/osi/os/posix/osdThread.c:308: error: for each function it appears in.)
../../../src/libCom/osi/os/posix/osdThread.c: In function `epicsThreadCreate':
../../../src/libCom/osi/os/posix/osdThread.c:395: error: `SIG_SETMASK' undeclared (first use in this function)
../../../src/libCom/osi/os/posix/osdThread.c: In function `epicsThreadSleep':
../../../src/libCom/osi/os/posix/osdThread.c:589: error: storage size of `delayTime' isn't known
../../../src/libCom/osi/os/posix/osdThread.c:590: error: storage size of `remainingTime' isn't known
../../../src/libCom/osi/os/posix/osdThread.c:596: warning: implicit declaration of function `nanosleep'
../../../src/libCom/osi/os/posix/osdThread.c:589: warning: unused variable `delayTime'
../../../src/libCom/osi/os/posix/osdThread.c:590: warning: unused variable `remainingTime'
../../../src/libCom/osi/os/posix/osdThread.c: At top level:
../../../src/libCom/osi/os/posix/osdThread.c:151: warning: `getOssPriorityValue' defined but not used
../../../src/libCom/osi/os/posix/osdThread.c:426: warning: `nonEPICSthreadCleanup' defined but not used
make[3]: *** [osdThread.o] Error 1
make[3]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/libCom/O.linux-ixp422'
make[2]: *** [linux-ixp422] Error 2
make[2]: Leaving directory `/usr/local/epics/base-3.14.8.2/src/libCom'
make[1]: *** [libCom.linux-ixp422] Error 2
make[1]: Leaving directory `/usr/local/epics/base-3.14.8.2/src'
make: *** [src.linux-ixp422] Error 2
[root@oracle.sinap.ac.cn]:/usr/local/epics/base>
we can see the first error message is SIG_SETMASK is not defined. Usually, it's defined in the signal.h file. If I search "/usr/local/mxscaled", where development environment is resident, I can find
./armv5b-linux/include/asm-arm/signal.h                                                               
./armv5b-linux/include/linux/signal.h                                                                 
./armv5b-linux/include/signal.h                                                                       
./armv5b-linux/include/sys/signal.h                                                                   
but, ./armv5b-linux/include/signal.h does not define SIG_SETMASK,
while, ./armv5b-linux/include/asm-arm/signal.h includes the definition of IG_SETMASK marco。
so my first question is: which include directory should I include in my EPICS Makefile?
the second problem, there is another error message is like“storage size of `delayTime' isn't known”,In the osdThread.c, delayTime is defined as following:
struct timespec delayTime;
the "struct timespec" should be defined in time.h,similarly,I can find several time.h,as these:
./armv5b-linux/include/asm-arm/arch-ixp425/time.h                                                     
./armv5b-linux/include/bits/time.h                                                                    
./armv5b-linux/include/dns/time.h                                                                     
./armv5b-linux/include/isc/time.h                                                                     
./armv5b-linux/include/linux/time.h                                                                   
./armv5b-linux/include/linux/xfs_support/time.h                                                       
./armv5b-linux/include/sys/time.h                                                                     
./armv5b-linux/include/time.h                                                                         
In "/usr/local/mxscaleb/armv5b-linux/include/time.h",there is lines like this:
#if !defined __timespec_defined && \                                                                  
((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timespec)                       
# define __timespec_defined     1                                                                     
                                                                                                      
/* POSIX.1b structure for a time value.  This is like a `struct timeval' but                          
   has nanoseconds instead of microseconds.  */                                                       
struct timespec                                                                                       
  {                                                                                                   
    __time_t tv_sec;            /* Seconds.  */                                                       
    long int tv_nsec;           /* Nanoseconds.  */                                                   
  };                                                                                                  
                                                                                                      
#endif /* timespec not defined and <time.h> or need timespec.  */                                     
#undef  __need_timespec                                                                               
while I should have included this time.h when I compiled the target, so maybe I should define some marco to make those lines work. Does anybody have some experence with this? otherwise I have to check the marco like "__USE_POSIX199309" or "__need_timespec" one by one.
I appreciate for any suggestion and help, thanks a lot in advance.
 
Best Wishes
 
Geyang 2006/6/26
SSRF Control Group







你 不 想 试 试 今 夏 最 “酷” 的 邮 箱 吗 ?
蕴 涵 中 华 传 统 文 化 于 世 界 一 流 科 技 之 中,创 新 Ajax 技 术,126 “D 计 划”火 热 体 验 中 !
Replies:
Re: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux Michael Abbott

Navigate by Date:
Prev: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux marco_hair
Next: Re: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux Michael Abbott
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
Navigate by Thread:
Prev: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux marco_hair
Next: Re: problem about compiling EPICS base on Int el XScale RISC CPU and Monta Vista Linux Michael Abbott
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·