Hi Arnab,
I suspect the problem is that the National Instruments header files are not compatible with the version of gcc that comes wqith Cygwin. I think you should try compiling with Visual Studio. The Community Editions of VS2015 and 2017 are free.
For example the __in64 type is undefined, but that is defined in Visual Studio.
In file included from drvDaqMx.c:65:0:
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:85:2: error: unknown type name ‘__int64
Similarly this error is because inistd.h is declaring write() differently from their library. write() is not defined on most versions of Visual Studio.
drvDaqMx.c:240:2: error: ‘write’ redeclared as different kind of symbol
write,
^
In file included from /usr/include/sys/types.h:20:0,
from drvDaqMx.c:25:
/usr/include/sys/unistd.h:197:25: note: previous declaration of ‘write’ was here
_READ_WRITE_RETURN_TYPE _EXFUN(write, (int __fd, const void *__buf, size_t __nbyte ));
More importantly, I have found a serious problem with recent versions of Cygwin when trying to link with vendor libraries. Vendor libraries normally come with .h, .lib, and .dll files. Earlier versions of Cygwin (perhaps 4-5 years ago) would link with the .lib files with no problem. However, I found that recent versions of Cygwin give errors that the .lib file cannot be recognized. This makes Cygwin pretty useless when trying to write EPICS drivers that need to link with vendor libraries.
Mark
________________________________
From: [email protected] <[email protected]> on behalf of Arnab Dasgupta <[email protected]>
Sent: Wednesday, January 17, 2018 7:56 AM
To: tech-talk
Subject: EPICS-DAQmx App Build Issues on cygwin-x86_64
Hi,
I was trying to build the EPICS-DAQmxBaseApp with cygwin-x86_64 on windows8 and I got the error as:
/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master
$ make
configure/RELEASE:2: ../../../configure/MASTER_RELEASE: No such file or directory
configure/RELEASE:11: ../../../ISIS_CONFIG: No such file or directory
make: *** No rule to make target '../../../ISIS_CONFIG'. Stop.
I made changes to the configure file i.e commented the MASTER_Release.....
and also I tried to build the app with NIDAQmx and commented out the NIDAQmxBase Part in C:\epics\Applications\nidaqmx\EPICS-DAQmxBase-master\DAQmxBaseApp\src\makefile but still got the below error:
$ make
make -C ./configure install
make[1]: Entering directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/configure'
make -C O.cygwin-x86_64 -f ../Makefile TOP=../.. T_A=cygwin-x86_64 install
make[2]: Entering directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/configure/O.cygwin-x86_64'
perl /cygdrive/c/epics/base-3.14.12.4/bin/cygwin-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/configure/O.cygwin-x86_64'
make[1]: Leaving directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/configure'
make -C ./DAQmxBaseApp install
make[1]: Entering directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp'
make -C ./src install
make[2]: Entering directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp/src'
make -C O.cygwin-x86_64 -f ../Makefile TOP=../../.. T_A=cygwin-x86_64 install
make[3]: Entering directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp/src/O.cygwin-x86_64'
gcc -c -D_POSIX_THREADS -D_POSIX_TIMERS -DUNIX -DCYGWIN32 -O3 -Wall -DDODAQMXFULL=1 -m64 -D_DLL -MMD -I. -I../O.Common -I. -I.. -I../../../include/os/cygwin32 -I../../../include -I/cygdrive/c/epics/base-3.14.12.4/modules/soft/asyn4-25//include -I/cygdrive/c/epics/base-3.14.12.4/include/os/cygwin32 -I/cygdrive/c/epics/base-3.14.12.4/include -I/cygdrive/c/Program\ Files\ \(x86\)/National\ Instruments/Shared/ExternalCompilerSupport/C/include drvDaqMx.c
In file included from drvDaqMx.c:65:0:
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:85:2: error: unknown type name ‘__int64’
typedef __int64 int64;
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:93:29: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘uInt64’
typedef unsigned __int64 uInt64;
^
In file included from drvDaqMx.c:65:0:
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2546:145: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgSampClkTiming (TaskHandle taskHandle, const char source[], float64 rate, int32 activeEdge, int32 sampleMode, uInt64 sampsPerChan);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2548:92: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgHandshakingTiming (TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChan);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2550:102: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgBurstHandshakingTimingImportClock(TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChan, float64 sampleClkRate, const char sampleClkSrc[], int32 sampleClkActiveEdge, int32 pauseWhen, int32 readyEventActiveLevel);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2552:102: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgBurstHandshakingTimingExportClock(TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChan, float64 sampleClkRate, const char sampleClkOutpTerm[], int32 sampleClkPulsePolarity, int32 pauseWhen, int32 readyEventActiveLevel);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2553:151: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgChangeDetectionTiming (TaskHandle taskHandle, const char risingEdgeChan[], const char fallingEdgeChan[], int32 sampleMode, uInt64 sampsPerChan);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2555:92: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgImplicitTiming (TaskHandle taskHandle, int32 sampleMode, uInt64 sampsPerChan);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:2557:145: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxCfgPipelinedSampClkTiming (TaskHandle taskHandle, const char source[], float64 rate, int32 activeEdge, int32 sampleMode, uInt64 sampsPerChan);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5829:66: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetLoggingSampsPerFile(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5830:66: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxSetLoggingSampsPerFile(TaskHandle taskHandle, uInt64 data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5837:75: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetLoggingFilePreallocationSize(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5838:75: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxSetLoggingFilePreallocationSize(TaskHandle taskHandle, uInt64 data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5841:62: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetReadCurrReadPos(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:5845:75: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetReadTotalSampPerChanAcquired(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:6080:67: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetSampQuantSampPerChan(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:6081:67: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxSetSampQuantSampPerChan(TaskHandle taskHandle, uInt64 data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:6892:64: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetWriteCurrWritePos(TaskHandle taskHandle, uInt64 *data);
^
/cygdrive/c/Program Files (x86)/National Instruments/Shared/ExternalCompilerSupport/C/include/NIDAQmx.h:6920:77: error: unknown type name ‘uInt64’
int32 __CFUNC DAQmxGetWriteTotalSampPerChanGenerated(TaskHandle taskHandle, uInt64 *data);
^
drvDaqMx.c:240:2: error: ‘write’ redeclared as different kind of symbol
write,
^
In file included from /usr/include/sys/types.h:20:0,
from drvDaqMx.c:25:
/usr/include/sys/unistd.h:197:25: note: previous declaration of ‘write’ was here
_READ_WRITE_RETURN_TYPE _EXFUN(write, (int __fd, const void *__buf, size_t __nbyte ));
^
drvDaqMx.c:2021:22: error: static declaration of ‘getAsynPort’ follows non-static declaration
static daqMxBasePvt *getAsynPort(char *portName )
^
drvDaqMx.c:495:15: note: previous declaration of ‘getAsynPort’ was here
daqMxBasePvt *getAsynPort( char *portName );
^
drvDaqMx.c:2748:12: error: static declaration of ‘DAQmxBaseConfig’ follows non-static declaration
static int DAQmxBaseConfig(char *portName, char * deviceName, int Channelnr, char * sacqType, char* options)
^
drvDaqMx.c:499:5: note: previous declaration of ‘DAQmxBaseConfig’ was here
int DAQmxBaseConfig(char *portName, char * deviceName, int Channelnr, char* sacqType, char* options);
^
drvDaqMx.c:3168:13: error: static declaration of ‘daqThread’ follows non-static declaration
static void daqThread(void *param)
^
drvDaqMx.c:488:6: note: previous declaration of ‘daqThread’ was here
void daqThread(void *param);
^
drvDaqMx.c: In function ‘daqThread’:
drvDaqMx.c:3529:6: warning: implicit declaration of function ‘DAQmxCfgImplicitTiming’ [-Wimplicit-function-declaration]
if (DAQmxFailed(DAQmxBaseCfgImplicitTiming(pPvt->taskHandle,
^
drvDaqMx.c:3558:9: warning: implicit declaration of function ‘DAQmxCfgSampClkTiming’ [-Wimplicit-function-declaration]
if( DAQmxFailed( DAQmxBaseCfgSampClkTiming( pPvt->taskHandle,
^
drvDaqMx.c:3598:5: warning: zero-length gnu_printf format string [-Wformat-zero-length]
asynPrint(pPvt->pasynUser,ASYN_TRACE_ERROR,
^
drvDaqMx.c: At top level:
drvDaqMx.c:3168:13: warning: ‘daqThread’ defined but not used [-Wunused-function]
static void daqThread(void *param)
^
/cygdrive/c/epics/base-3.14.12.4/configure/RULES_BUILD:199: recipe for target 'drvDaqMx.o' failed
make[3]: *** [drvDaqMx.o] Error 1
make[3]: Leaving directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp/src/O.cygwin-x86_64'
/cygdrive/c/epics/base-3.14.12.4/configure/RULES_ARCHS:63: recipe for target 'install.cygwin-x86_64' failed
make[2]: *** [install.cygwin-x86_64] Error 2
make[2]: Leaving directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp/src'
/cygdrive/c/epics/base-3.14.12.4/configure/RULES_DIRS:70: recipe for target 'src.install' failed
make[1]: *** [src.install] Error 2
make[1]: Leaving directory '/cygdrive/c/epics/Applications/nidaqmx/EPICS-DAQmxBase-master/DAQmxBaseApp'
/cygdrive/c/epics/base-3.14.12.4/configure/RULES_DIRS:70: recipe for target 'DAQmxBaseApp.install' failed
make: *** [DAQmxBaseApp.install] Error 2...
Kindly help and suggest the changes as I could not resolve the error.
Thanks
Arnab
- References:
- EPICS-DAQmx App Build Issues on cygwin-x86_64 Arnab Dasgupta
- Navigate by Date:
- Prev:
RE: EPICS-DAQmx App Build Issues on cygwin-x86_64 Jemian, Pete R.
- Next:
Forcing make rule in IOC Makefile Konrad, Martin
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: EPICS-DAQmx App Build Issues on cygwin-x86_64 Jemian, Pete R.
- Next:
Forcing make rule in IOC Makefile Konrad, Martin
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
<2018>
2019
2020
2021
2022
2023
2024
|