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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: ADDexala build error |
From: | John Dobbins via Tech-talk <tech-talk at aps.anl.gov> |
To: | "Engbretson, Mark S." <engbretson at anl.gov>, "Rivers, Mark L." <rivers at cars.uchicago.edu>, "Akeroyd, Freddie (STFC, RAL, ISIS)" <freddie.akeroyd at stfc.ac.uk>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Tue, 3 Nov 2020 20:55:23 +0000 |
So... I am trying my IOC built with dynamic libraries. When I start the IOC it complains about not finding DexelaDectector.dll, which indeed does not exist.
In ADDexela/lib/windows-x64 I see DexelaDetector.lib (plus some others I am sure it will ask for next) but ADDexela/bin/windows-x64 only has Dexela.dll
John
From: Engbretson, Mark S. <engbretson at anl.gov>
Sent: Tuesday, November 3, 2020 3:49 PM To: John Dobbins <john.dobbins at cornell.edu>; Rivers, Mark L. <rivers at cars.uchicago.edu>; Akeroyd, Freddie (STFC, RAL, ISIS) <freddie.akeroyd at stfc.ac.uk> Subject: RE: ADDexala build error There is an option when you build the Area Detector in the lowest level makefile
TARGETS = envPaths dllPath.bat
And the dllpaths.bat that is created (when run) will add all those dll file locations to your path so that it will find them, but this works OK . . . if your are then running this detector on the machine that you compiled everything . . . but if you deploy it to another machine, you either to dragged all that over as well. It is certainly nice just to have a single, if larger executable.
You still have to adjust the envPaths, if you move it, but that is typically an easy thing to correct.
In theory, one should be able to update or patch a DLL file and have it all still work, without recompiling everything else, but there are so many dependencies that I wouldn’t count on it.
Personal preference, but static seems easier and clearer.
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of John Dobbins via Tech-talk
Though I've just realized why one wants to do a static build on Windows - otherwise the dlls are scattered all over. Is that right?
John
From: John Dobbins <john.dobbins at cornell.edu>
Thanks everyone.
By more carefully going through the various configure files and doing a clean then make, ADCore, ADSupport, and ADDexela are all built.
John
From: Mark Rivers <rivers at cars.uchicago.edu>
Hi John,
This addresses your second question:
Ø c:\epics\support\areadetector-r3-10\adcore\adapp\adsrc\asynndarraydriver.cpp(20): fatal error C1083: Cannot open include file: 'libxml/parser.h': No such file or directory
In areaDetector/configure/CONFIG_SITE.local you should have XML2_EXTERNAL=NO. If so then it should be looking for libxml/parser.h in ADSupport/include/os/WIN32/
That file should exist in ADSupport/include/os/WIN32/libxml. Here it is on my system.
corvette:~/devel/areaDetector>ls -l ADSupport/include/os/WIN32/libxml/parser.h -rwxrwxr-x 1 epics domain users 39717 Oct 24 2017 ADSupport/include/os/WIN32/libxml/parser.h
I just recompiled asynNDArryDriver.cpp on my system and it worked.
This is the output when I build where I have added line breaks before most of the –I options to make it more legible.
cl -EHsc -GR -DBUILDING_ADCore_API -nologo -FC -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -Oy- -W3 -w44355 -w44344 -w44251 -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING -MT -TP -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -IJ:/epics/devel/include -IJ:/epics/devel/asyn-4-41/include -IJ:/epics/devel/areaDetector-3-10/ADSupport/include/os/WIN32 -IJ:/epics/devel/areaDetector-3-10/ADSupport/include -IJ:/epics/devel/areaDetector-3-10/ADCore/include -IH:/epics-devel/base-7.0.4/include/compiler/msvc -IH:/epics-devel/base-7.0.4/include/os/WIN32 -IH:/epics-devel/base-7.0.4/include -c ../asynNDArrayDriver.cpp asynNDArrayDriver.cpp
This is the output when you build and it can’t find libxml/parser.h.
cl -EHsc -GR -DBUILDING_ADCore_API -nologo -FC -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -w44344 -w44251 -MD -DEPICS_BUILD_DLL -DEPICS_CALL_DLL -TP -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -IC:\EPICS\support/asyn-R4-41/include -IC:\EPICS\support/areaDetector-R3-10/ADSupport/include -IC:\EPICS\support/areaDetector-R3-10/ADCore/include -IC:\EPICS\base-3.15.8/include/compiler/msvc -IC:\EPICS\base-3.15.8/include/os/WIN32 -IC:\EPICS\base-3.15.8/include -c ../asynNDArrayDriver.cpp asynNDArrayDriver.
The critical difference is that my system has this, and yours does not: -IJ:/epics/devel/areaDetector-3-10/ADSupport/include/os/WIN32
That suggests to me that perhaps you did not build ADSupport before building ADCore? Does that ADSupport/include/os/WIN32 directory exist on your system?
Mark
From: John Dobbins <john.dobbins at cornell.edu>
All,
At this point I have two questions.
1) what is the proper way to get a clean areaDetector distribution, e.g. R3-10 with the appropriate modules? The areaDetector github repository has many modules and I don't know that I am using it correctly.
2) After grabbing areaDetector R3-10 I get the error:
cl -EHsc -GR -DBUILDING_ADCore_API -nologo -FC -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -w44344 -w44251 -MD -DEPICS_BUILD_DLL -DEPICS_CALL_DLL -TP -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/msvc -I../../../include/os/WIN32 -I../../../include -IC:\EPICS\support/asyn-R4-41/include -IC:\EPICS\support/areaDetector-R3-10/ADSupport/include -IC:\EPICS\support/areaDetector-R3-10/ADCore/include -IC:\EPICS\base-3.15.8/include/compiler/msvc -IC:\EPICS\base-3.15.8/include/os/WIN32 -IC:\EPICS\base-3.15.8/include -c ../asynNDArrayDriver.cpp asynNDArrayDriver.cpp c:\epics\support\areadetector-r3-10\adcore\adapp\adsrc\asynndarraydriver.cpp(20): fatal error C1083: Cannot open include file: 'libxml/parser.h': No such file or directory gmake[5]: *** [C:\EPICS\base-3.15.8/configure/RULES_BUILD:240: asynNDArrayDriver.obj] Error 2 gmake[5]: Leaving directory 'C:/EPICS/support/areaDetector-R3-10/ADCore/ADApp/ADSrc/O.windows-x64' gmake[4]: *** [C:\EPICS\base-3.15.8/configure/RULES_ARCHS:58: install.windows-x64] Error 2 gmake[4]: Leaving directory 'C:/EPICS/support/areaDetector-R3-10/ADCore/ADApp/ADSrc' gmake[3]: *** [C:\EPICS\base-3.15.8/configure/RULES_DIRS:85: ADSrc.install] Error 2 gmake[3]: Leaving directory 'C:/EPICS/support/areaDetector-R3-10/ADCore/ADApp' gmake[2]: *** [C:\EPICS\base-3.15.8/configure/RULES_DIRS:85: ADApp.install] Error 2 gmake[2]: Leaving directory 'C:/EPICS/support/areaDetector-R3-10/ADCore' gmake[1]: *** [C:\EPICS\base-3.15.8/configure/RULES_DIRS:85: C:\EPICS\support/areaDetector-R3-10/ADCore.install] Error 2 gmake[1]: Leaving directory 'C:/EPICS/support/areaDetector-R3-10' gmake: *** [C:\EPICS\base-3.15.8/configure/RULES_DIRS:85: C:\EPICS\support/areaDetector-R3-10.install] Error 2
John
From: Mark Rivers <rivers at cars.uchicago.edu>
Hi John, |