Hi Bob,
Thanks, that fixes the problem with 32-bit builds. I think the patch should definitely go on the known problems page.
Mark
-----Original Message-----
From: Bob Soliday [mailto:[email protected]]
Sent: Monday, November 09, 2015 4:02 PM
To: Mark Rivers; [email protected]
Subject: Re: Building Epics base 3.15.2 in Windows 7
Okay, I forgot I patched my local copy.
Change epicsExceptionTest.cpp from:
# if _MSC_VER > 1310 /* this gets fixed some release after visual
studio 7 we hope */
static const size_t unsuccessfulNewSize = numeric_limits <
size_t > :: max ();
# else
static const size_t unsuccessfulNewSize = numeric_limits <
size_t > :: max () - 100;
# endif
to
# if _MSC_VER >= 1900
static size_t unsuccessfulNewSize = numeric_limits < size_t >
:: max ();
# elif _MSC_VER > 1310 /* this gets fixed some release after visual
studio 7 we hope */
static const size_t unsuccessfulNewSize = numeric_limits <
size_t > :: max ();
# else
static const size_t unsuccessfulNewSize = numeric_limits <
size_t > :: max () - 100;
# endif
This should probably be a patch on the known problems page.
On 11/09/2015 03:41 PM, Mark Rivers wrote:
> Hi Bob,
>
> Thanks for the hint. You have solved half of my problem. I am building both 32-bit and 64-bit on a 64-bit system. Following your suggestion it now works on 64-bit but not on 32-bit.
>
> On both Visual Studio 2010 and 2015 I have been invoking vxvarsall.bat for 64-bit builds as follows:
>
> "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
>
> So I have been using the cross-compiler. On Visual Studio 2010 this works fine. However, on Visual Studio 2015 it leads to the error I reported in my previous message.
>
> This is the output of "where cl":
> C:\EPICS\base-3.15.2>where cl
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\cl.exe
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe
>
> I then changed my batch file to call pass "amd64" rather than "x86_amd64" to vcvarsall.bat:
> "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
>
> After doing that I can build for windows-x64 on my 64-bit Windows 7 system fine.
>
> However, when building for 32-bits I have the following from "where cl".
> C:\EPICS>where cl
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe
>
> So according to your message I am not using a cross-compiler, which should work. However, that leads to the error that Alexander and I reported previously:
> cl -EHsc -GR -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -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 -c ../epicsExceptionTest.cpp
> epicsExceptionTest.cpp
> ../epicsExceptionTest.cpp(59): error C2148: total size of array must not exceed 0x7fffffff bytes
> ../epicsExceptionTest.cpp(72): error C2148: total size of array must not exceed 0x7fffffff bytes
> ../../../../configure/RULES_BUILD:228: recipe for target 'epicsExceptionTest.obj' failed
> make[3]: *** [epicsExceptionTest.obj] Error 2
> make[3]: Leaving directory 'C:/EPICS/base-3.15.2/src/libCom/test/O.win32-x86'
> ../../../configure/RULES_ARCHS:61: recipe for target 'install.win32-x86' failed
>
> I then tried using the amd64 to x86 cross compiler by invoking vcvarsall.bat with "amd64_x86".
>
> After doing that this is the output of "where cl".
> C:\EPICS\base-3.15.2>where cl
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\cl.exe
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe
>
> However, building with that configuration also builds with the same error as above.
>
> The code in question is this:
>
> # if _MSC_VER > 1310 /* this gets fixed some release after visual studio 7 we hope */
> static const size_t unsuccessfulNewSize = numeric_limits < size_t > :: max ();
> # else
> static const size_t unsuccessfulNewSize = numeric_limits < size_t > :: max () - 100;
> # endif
> ...
> try {
> char * p = new char [unsuccessfulNewSize];
> testFail("new char[%lu] returned %p",
> (unsigned long) unsuccessfulNewSize, p);
> }
>
> So it is trying to allocate an array of invalid size, and hoping to get a run-time exception. Instead it is getting a compiler error with the 32-bit compiler.
>
> Note that this works fine with Visual Studio 2010 using the same configuration that fails in VS 2015.
>
> It looks to me like the code that is testing the _MSC_VER above may need to be changed for VS 2015.
>
> Mark
>
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Bob Soliday
> Sent: Monday, November 09, 2015 2:02 PM
> To: [email protected]
> Subject: Re: Building Epics base 3.15.2 in Windows 7
>
> I think this error comes from using a cross compiler. Can you run "where
> cl" and see which one you are using? For win32-x86 I have VC\bin\cl.ele,
> for windows64-x64 I have VC\bin\amd64\cl.exe. If you see
> VC\bin\x86_amd64\cl.exe or VC\bin\amd64_x86\cl.ele then you are using a
> cross compiler. I saw this error when I was on a 64bit system running
> 32bit compiler that was producing a 64bit executable.
>
> On 11/09/2015 01:10 PM, Mark Rivers wrote:
>> I get the same error building base 3.15.2 with the Visual Studio 2015 Community Edition on both win32-x86 and windows-x64.
>>
>> cl -EHsc -GR -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -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 -c ../epicsExceptionTest.cpp
>> epicsExceptionTest.cpp
>> ../epicsExceptionTest.cpp(59): error C2148: total size of array must not exceed 0x7fffffff bytes
>> ../epicsExceptionTest.cpp(72): error C2148: total size of array must not exceed 0x7fffffff bytes
>> ../../../../configure/RULES_BUILD:228: recipe for target 'epicsExceptionTest.obj' failed
>> make[3]: *** [epicsExceptionTest.obj] Error 2
>> make[3]: Leaving directory 'C:/EPICS/base-3.15.2/src/libCom/test/O.windows-x64'
>> ../../../configure/RULES_ARCHS:61: recipe for target 'install.windows-x64' failed
>> make[2]: *** [install.windows-x64] Error 2
>> make[2]: Leaving directory 'C:/EPICS/base-3.15.2/src/libCom/test'
>> ../configure/RULES_DIRS:88: recipe for target 'libCom/test.install' failed
>> make[1]: *** [libCom/test.install] Error 2
>> make[1]: Leaving directory 'C:/EPICS/base-3.15.2/src'
>> configure/RULES_DIRS:88: recipe for target 'src.install' failed
>> make: *** [src.install] Error 2
>>
>>
>> cl -EHsc -GR -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w44355 -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 -c ../epicsExceptionTest.cpp
>> epicsExceptionTest.cpp
>> ../epicsExceptionTest.cpp(59): error C2148: total size of array must not exceed 0x7fffffff bytes
>> ../epicsExceptionTest.cpp(72): error C2148: total size of array must not exceed 0x7fffffff bytes
>> ../../../../configure/RULES_BUILD:228: recipe for target 'epicsExceptionTest.obj' failed
>> make[3]: *** [epicsExceptionTest.obj] Error 2
>> make[3]: Leaving directory 'C:/EPICS/base-3.15.2/src/libCom/test/O.win32-x86'
>> ../../../configure/RULES_ARCHS:61: recipe for target 'install.win32-x86' failed
>> make[2]: *** [install.win32-x86] Error 2
>> make[2]: Leaving directory 'C:/EPICS/base-3.15.2/src/libCom/test'
>> ../configure/RULES_DIRS:88: recipe for target 'libCom/test.install' failed
>> make[1]: *** [libCom/test.install] Error 2
>> make[1]: Leaving directory 'C:/EPICS/base-3.15.2/src'
>> configure/RULES_DIRS:88: recipe for target 'src.install' failed
>> make: *** [src.install] Error 2
>>
>>
>> Mark
>>
>> -----Original Message-----
>> From: Klyachko, Alexander Vitalievich [mailto:[email protected]]
>> Sent: Monday, November 09, 2015 12:28 PM
>> To: Mark Rivers; 'Pete Jemian'; [email protected]
>> Subject: Re: Building Epics base 3.15.2 in Windows 7
>>
>> That worked very well - well, almost.
>> I installed VC++ support, now have vcvarsall.bat. Using it, make now get much farther, but I still get an error message:
>> Generating code
>> Finished generating code
>> cl -EHsc -GR -nologo -D__STDC__=0 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -Ox -GL -Oy- -W3 -w443
>> 55 -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 -c ../epicsExceptionTest.cpp
>> epicsExceptionTest.cpp
>> ../epicsExceptionTest.cpp(59): error C2148: total size of array must not exceed 0x7fffffff bytes
>> ../epicsExceptionTest.cpp(72): error C2148: total size of array must not exceed 0x7fffffff bytes
>> make[3]: *** [epicsExceptionTest.obj] Error 2
>> make[3]: Leaving directory `c:/base-3.15.2/src/libCom/test/O.win32-x86'
>> make[2]: *** [install.win32-x86] Error 2
>> make[2]: Leaving directory `c:/base-3.15.2/src/libCom/test'
>> make[1]: *** [libCom/test.install] Error 2
>> make[1]: Leaving directory `c:/base-3.15.2/src'
>> make: *** [src.install] Error 2
>>
>> Thanks,
>> Alex.
>> ________________________________________
>> From: Mark Rivers <[email protected]>
>> Sent: Saturday, November 7, 2015 11:57 AM
>> To: 'Pete Jemian'; [email protected]; Klyachko, Alexander Vitalievich
>> Subject: RE: Building Epics base 3.15.2 in Windows 7
>>
>> I figured out my problem. I had not configured Visual Studio 2015 to have the VC++ language support.
>>
>> I fixed this using Control Panel/Programs and Features/Microsoft Visual Studio 2015/Change and selected Modify. I then checked the box for Programming Languages/VC++. Once I did that then many more .bat files appeared, including Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat.
>>
>> Alexander also reported that he did not have a vcvarsall.bat file on his system, so I suspect he has the same problem I did, and also needs to install the VC++ support in Visual Studio. I think that once vcvarsall.bat is run from the cmd window startup that the EPICS build errors will be fixed.
>>
>> Mark
>>
>> ________________________________________
>> From: Mark Rivers
>> Sent: Friday, November 06, 2015 5:05 PM
>> To: 'Pete Jemian'; [email protected]
>> Subject: RE: Building Epics base 3.15.2 in Windows 7
>>
>> My installation is missing the vcvars64.bat and vcvarsall.bat files. Perhaps some incorrect choice I made during installation? Mine is also a new installation of 2015 Community, and I have not tried to use it either.
>>
>> Mark
>>
>>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]] On Behalf Of Pete Jemian
>> Sent: Friday, November 06, 2015 5:01 PM
>> To: [email protected]
>> Subject: Re: Building Epics base 3.15.2 in Windows 7
>>
>> perhaps this?
>> D:\Program Files (x86)\Microsoft Visual Studio
>> 14.0\VC\bin\amd64\vcvars64.bat
>>
>> and what about this?
>> D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat
>>
>> On 11/6/2015 4:38 PM, Mark Rivers wrote:
>>
>>> C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\vxvars32.bat
>>>
>>> But that file is only for 32-bit builds. I can't find a batch file for defining things for 64-bit builds.
>>>
>>> Alexander, do you have a file for doing 64-bit builds on your system?
>>>
>>> Mark
>> --
>> ----------------------------------------------------------
>> Pete R. Jemian, Ph.D. <[email protected]>
>> Beam line Controls and Data Acquisition, Group Leader
>> Advanced Photon Source, Argonne National Laboratory
>> Argonne, IL 60439 630 - 252 - 3189
>> -----------------------------------------------------------
>> Education is the one thing for which people
>> are willing to pay yet not receive.
>> -----------------------------------------------------------
>>
>>
>>
- References:
- Building Epics base 3.15.2 in Windows 7 Klyachko, Alexander Vitalievich
- RE: Building Epics base 3.15.2 in Windows 7 Mark S. Engbretson
- RE: Building Epics base 3.15.2 in Windows 7 Mark S. Engbretson
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Klyachko, Alexander Vitalievich
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Klyachko, Alexander Vitalievich
- RE: Building Epics base 3.15.2 in Windows 7 Mark S. Engbretson
- Re: Building Epics base 3.15.2 in Windows 7 Klyachko, Alexander Vitalievich
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Pete Jemian
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Klyachko, Alexander Vitalievich
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Bob Soliday
- RE: Building Epics base 3.15.2 in Windows 7 Mark Rivers
- Re: Building Epics base 3.15.2 in Windows 7 Bob Soliday
- Navigate by Date:
- Prev:
Re: Building Epics base 3.15.2 in Windows 7 Andrew Johnson
- Next:
Re: Advice on VME processor cards and OS for EPICS Kevin Peterson
- 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: Building Epics base 3.15.2 in Windows 7 Andrew Johnson
- Next:
Re: Building Epics base 3.15.2 in Windows 7 Mark Engbretson
- 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
|