Experimental Physics and
| |||||||||||||||
|
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:
[[email protected]]:/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 [[email protected]]:/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 计 划”火 热 体 验 中 !
| ||||||||||||||
ANJ, 02 Sep 2010 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |