Boost logo

Boost-Build :

Subject: Re: [Boost-build] b2/bjam trying to use GCC 6.1.1 missing zlib1.dll
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2016-08-09 13:35:45


> -----Original Message-----
> From: Edward Diener [mailto:eldiener_at_[hidden]]
> Sent: 08 August 2016 21:45
> To: boost-build_at_[hidden]
> Subject: Re: [Boost-build] b2/bjam trying to use GCC 6.1.1 missing zlib1.dll
>
> On 8/8/2016 2:14 PM, Paul A. Bristow wrote:
> > I can run gcc 5.3.0 OK with this in my user-config.com
> >
> > using gcc
> > : # version
> > 5.3.0
> > : # compiler exe location
> > "C:\\Program Files\\mingw-w64\\x86_64-5.3.0-win32-seh-rt_v4-rev0\\mingw64\\bin\\g++.exe"
> > : # options
> > ;
> > # b2 -a toolset=gcc-5.3.0 says 64-bit and x86 and compiles a simple 'hello_worldly' program OK.
> >
> > I:\modular-boost\libs\quickdox\example>b2 -a toolset=gcc-5.3.0
> > Performing configuration checks
> >
> > - 32-bit : no (cached)
> > - 64-bit : yes (cached)
> > - arm : no (cached)
> > - mips1 : no (cached)
> > - power : no (cached)
> > - sparc : no (cached)
> > - x86 : yes (cached)
> > - symlinks supported : yes
> > ...found 19 targets...
> > ...updating 7 targets...
> > common.mkdir ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0
> > common.mkdir ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug
> > link.mklink ..\..\..\boost\quickdox\quick_auto_dox_index.hpp
> > symbolic link created for ..\..\..\boost\quickdox\quick_auto_dox_index.hpp <<===>>
> > ..\..\libs\quickdox\include\boost\quickdox\quick_auto_dox_index.hpp
> > gcc.compile.c++ ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 5.3.0\debug\quick_auto_dox_index.o
> > gcc.link ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 5.3.0\debug\quick_auto_dox_index.exe
> > testing.capture-output
> > ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug\quick_auto_dox_index.run
> > 1 file(s) copied.
> > **passed** ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 5.3.0\debug\quick_auto_dox_index.test
> > ...updated 7 targets...
> >
> > and I also have gcc 6.1.1 installed (and working with Codeblocks IDE)
> >
> > C:\Program Files\gcc-6-win64\bin>g++ -v
> > Using built-in specs.
> > COLLECT_GCC=g++
> > COLLECT_LTO_WRAPPER=c:/program\ files/gcc-6-win64/bin/../libexec/gcc/x86_64-w64-mingw32/6.1.1/lto-wrapper.exe
> > Target: x86_64-w64-mingw32
> > Configured with: /home/cauchy/vcs/svn/gcc/branches/gcc-6-branch/configure --prefix=/home/cauchy/native/gcc-6-
> win64
> > --with-sysroot=/home/cauchy/native/gcc-6-win64 --build=x86_64-unknown-linux-gnu --host=x86_64-w64-mingw32
> > --target=x86_64-w64-mingw32 --disable-gcov-tool --disable-multilib --disable-nls --disable-win32-registry --enable-
> checking=release
> > --enable-languages=c,c++,fortran --enable-fully-dynamic-string --with-arch=core2 --with-tune=generic
> > Thread model: win32
> > gcc version 6.1.1 20160609 (GCC)
> >
> > but now I want to use with b2/bjam so I have added this to my user-config.jam
> >
> > using gcc
> > : # version
> > 6.1.1
> > : # compiler exe location C:\Program Files\gcc-6-win64\bin\g++.exe
> > "C:\\Program Files\\gcc-6-win64\\bin\\g++.exe"
> > : # options
> > ;
> > # Call with b2 -a toolset=gcc-6.1.1
> >
> > and it fails missing zip1.dll
> >
> > However this file is in the same \bin directory as g++.exe (and
> >
> > x86_64-w64-mingw32-c++.exe
> > x86_64-w64-mingw32-g++.exe
> > ...
> >
> > I also note that in the config info is it different as says no for 32-bit, 64-bit and x86
> >
> > I:\modular-boost\libs\quickdox\example>b2 -a toolset=gcc-6.1.1
> > Performing configuration checks
> >
> > - 32-bit : no (cached)
> > - 64-bit : no (cached)
> > - arm : no (cached)
> > - mips1 : no (cached)
> > - power : no (cached)
> > - sparc : no (cached)
> > - x86 : no (cached)
> > - combined : no (cached)
> > - symlinks supported : yes (cached)
> > ...found 23 targets...
> > ...updating 5 targets...
> > link.mklink ..\..\..\boost\quickdox\quick_auto_dox_index.hpp
> > symbolic link created for ..\..\..\boost\quickdox\quick_auto_dox_index.hpp <<===>>
> > ..\..\libs\quickdox\include\boost\quickdox\quick_auto_dox_index.hpp
> > gcc.compile.c++ ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 6.1.1\debug\quick_auto_dox_index.o
> >
> > "C:\Program Files\gcc-6-win64\bin\g++.exe" -ftemplate-depth-128 -O0 -fno-inline -Wall -g -Wno-missing-braces
> > -Wno-unused-local-typedefs -DBOOST_ALL_NO_LIB=1 -I"..\..\.." -I"..\include" -c -o
> > "..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.o"
> > "quick_auto_dox_index.cpp"
> >
> > ...failed gcc.compile.c++
> > ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.o...
> > ...skipped <p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 6.1.1\debug>quick_auto_dox_index.exe for lack
> > of <p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 6.1.1\debug>quick_auto_dox_index.o...
> > ...skipped <p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 6.1.1\debug>quick_auto_dox_index.run for lack
> > of <p..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-
> 6.1.1\debug>quick_auto_dox_index.exe...
> > ...failed updating 1 target...
> > ...skipped 3 targets...
> > ...updated 1 target...
> >
> > What do I need to do differently for the GCC 6.1.1 compiler?
>
> The mingw(-64)/gcc implementations needs the gcc directory to be in your
> PATH, both while compiling and linking. Why ? Because they decided this
> was superior to simply looking for the needed DLLs and static libs in
> the same directory as the compiler !!! In other words, they're idiots
> but if you tell them that ( in civilized terms of course ) they will
> defend how gcc works no matter what you say, ie. because "Microsoft does
> it that way", because the world is round, because they are going to stay
> in the 19th century ( BC ) no matter how hard you want to drag them into
> the present 21st century.

OK I have added that, but how does this work when one has several GCC versions?

I've added "C:\Program Files\gcc-6-win64\bin" to PATH expecting that to give access to the appropriate matching version zlib1.dll

and it appears to do so:

I:\modular-boost\libs\quickdox\example>b2 -a toolset=gcc-6.1.1
Performing configuration checks

    - 32-bit : no (cached)
    - 64-bit : no (cached)
    - arm : no (cached)
    - mips1 : no (cached)
    - power : no (cached)
    - sparc : no (cached)
    - x86 : no (cached)
    - combined : no (cached)
    - symlinks supported : yes (cached)
...found 23 targets...
...updating 5 targets...
link.mklink ..\..\..\boost\quickdox\quick_auto_dox_index.hpp
symbolic link created for ..\..\..\boost\quickdox\quick_auto_dox_index.hpp <<===>>
..\..\libs\quickdox\include\boost\quickdox\quick_auto_dox_index.hpp
gcc.compile.c++ ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.o
gcc.link ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.exe
testing.capture-output
..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.run
        1 file(s) copied.
**passed** ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-6.1.1\debug\quick_auto_dox_index.test
...updated 5 targets...

But it looks significant that both 32-bit and 64-bit and x86 all say "no".

whereas

I:\modular-boost\libs\quickdox\example>b2 -a toolset=gcc-5.3.0
Performing configuration checks

    - 32-bit : no (cached)
    - 64-bit : yes (cached)
    - arm : no (cached)
    - mips1 : no (cached)
    - power : no (cached)
    - sparc : no (cached)
    - x86 : yes (cached)
    - symlinks supported : yes (cached)
...found 23 targets...
...updating 5 targets...
link.mklink ..\..\..\boost\quickdox\quick_auto_dox_index.hpp
symbolic link created for ..\..\..\boost\quickdox\quick_auto_dox_index.hpp <<===>>
..\..\libs\quickdox\include\boost\quickdox\quick_auto_dox_index.hpp
gcc.compile.c++ ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug\quick_auto_dox_index.o
gcc.link ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug\quick_auto_dox_index.exe
testing.capture-output
..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug\quick_auto_dox_index.run
        1 file(s) copied.
**passed** ..\..\..\bin.v2\libs\quickdox\example\quick_auto_dox_index.test\gcc-mingw-5.3.0\debug\quick_auto_dox_index.test
...updated 5 targets...

I suspect this means I am doing sometime simply wrong, (again - sigh!) but I can't see what.

Or do I need to specify both architecture and address model explicitly for gcc 6.1.1?

Paul

---
Paul A. Bristow
Prizet Farmhouse
Kendal UK LA8 8AB
+44 (0) 1539 561830

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk