[Scons-users] Building versioned shared library fails when using MinGW
Ray Speth
speth at darkmatter.mit.edu
Sun Nov 27 14:48:03 EST 2016
I'm not entirely sure. I found some info for Autotools [1] that suggests
it should create 'libfoo-2.dll', and just looking through my MinGW
installation, it looks like there are a fair number of libraries that
follow this convention. I thought 'dylib' was just an OS X thing. I've
certainly never seen it on Windows.
One thought I had as to why SCons is complaining about multiple targets
is because building a shared library on Windows *does* require
generating multiple files -- you need both the DLL and the corresponding
"import library" (likely named 'libfoo-2.dll.a' when using MinGW) that
is used when linking to the DLL.
Regards,
Ray
[1] https://autotools.io/libtool/windows.html#libtool.windows.version
On 11/26/2016 11:07 PM, Bill Deegan wrote:
> What's the proper naming for a versioned shared library under mingw?
>
> Currently for your example it's trying to create : libfoo.dylib.2.4
>
> -Bill
>
> On Sat, Nov 26, 2016 at 4:34 PM, Ray Speth <speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>> wrote:
>
> If I name the target 'foo.dll', then the error becomes:
>
> scons: *** Multiple ways to build the same target were specified
> for: foo.dll
>
> If I change the name to 'foo.bar' then the error references the name
> 'foo.bar'.
>
> Adding either '--deub=presub' or '--tree=prune' does not provide any
> additional information. The output from running 'scons
> --debug-stacktrace' has been added to the previously-linked Gist.
>
> I would also note that debugging this does not necessarily require
> having MinGW installed. I am able to replicate this bug on an Ubuntu
> system as well, with the exception that in the "working" case you
> end up calling the system GCC with some flags that it doesn't like
> and compilation fails, as expected.
>
> Regards,
> Ray
>
> On 11/24/2016 11:05 PM, Bill Deegan wrote:
>
> What happens when you change the target for SharedLibrary to
> 'foo.dll' ?
>
> On Tue, Nov 22, 2016 at 7:57 PM, Ray Speth
> <speth at darkmatter.mit.edu <mailto:speth at darkmatter.mit.edu>
> <mailto:speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>>> wrote:
>
> Bill,
>
> Adding the --tree=prune and --deub=presub options don't
> change the
> output. The value of CCCOM is '$CC -o $TARGET -c $CFLAGS
> $CCFLAGS
> $_CCCOMCOM $SOURCES'. According to env.subst, this works out
> to 'gcc
> -o -c'.
>
> The output from adding the --debug=stacktrace option are
> posted at
>
> https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>,
> along with the full output of 'print env.Dump()'.
>
> Regards,
> Ray
>
> On 11/20/2016 6:43 PM, Bill Deegan wrote:
>
> Ray,
>
> I don't have mingw installed on a system I have readily
> available today.
> Can you pastebin the output for the following:
>
> scons --tree=prune
> scons --deub=presub
>
> Add:
>
> print env.Dump('CCCOM')
>
> To you Sconstruct and run scons and copy that output as
> well.
>
> Thanks,
>
> Bill
>
>
>
> On Sat, Nov 19, 2016 at 5:59 PM, Ray Speth
> <speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>
> <mailto:speth at darkmatter.mit.edu <mailto:speth at darkmatter.mit.edu>>
> <mailto:speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>
> <mailto:speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>>>> wrote:
>
>
> Hi,
>
> I have encountered an apparent bug when trying to build
> versioned
>
> shared libraries with MinGW. A minimal SConstruct:
>
>
> env = Environment(tools=['mingw'])
> lib = env.SharedLibrary('foo', ['foo.cpp'],
> SHLIBVERSION='2.4')
> env.AlwaysBuild(lib)
>
> generates the following output:
>
> scons: Reading SConscript files ...
> scons: *** A shared library should have exactly one
> target with the
> suffix: .dll
> File "path\to\SConstruct", line 2, in <module>
>
> I have tested this with SCons 2.4.1, 2.5.0, and
> 2.5.1, with
> the same
>
> results.
>
>
> Regards,
> Ray
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
> <mailto:Scons-users at scons.org
> <mailto:Scons-users at scons.org> <mailto:Scons-users at scons.org
> <mailto:Scons-users at scons.org>>>
>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
> <https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
> <https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> <mailto:Scons-users at scons.org <mailto:Scons-users at scons.org>>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
> <https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>>
>
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org <mailto:Scons-users at scons.org>
> https://pairlist4.pair.net/mailman/listinfo/scons-users
> <https://pairlist4.pair.net/mailman/listinfo/scons-users>
>
>
>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
More information about the Scons-users
mailing list