Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  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  <20182019 
<== Date ==> <== Thread ==>

Subject: Re: EPICS-DAQmx App Build Issues on cygwin-x86_64
From: Mark Rivers <rivers@cars.uchicago.edu>
To: Arnab Dasgupta <arnabdasg@ipr.res.in>, tech-talk <tech-talk@aps.anl.gov>
Date: Wed, 17 Jan 2018 14:38:55 +0000
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: tech-talk-bounces@aps.anl.gov <tech-talk-bounces@aps.anl.gov> on behalf of Arnab Dasgupta <arnabdasg@ipr.res.in>
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  <20182019 
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  <20182019 
ANJ, 17 Jan 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·