[Scons-users] Building versioned shared library fails when using MinGW
Ray Speth
speth at darkmatter.mit.edu
Mon Nov 28 22:47:35 EST 2016
Bill,
Perhaps I missed it, but I don't think you had previously asked for a
listing of the libraries in the MinGW installation. In any case, I have
added a partial listing of the files in my installation to the
previously-linked Gist [1].
I did not mean to offend by stating that I do not understand how the
MinGW distribution (which I did provide information on) could be the
source of the error. The origin of this bug report is in fact from a
user of an open source project for which I'm a maintainer, so I fully
understand the value (and costs) of free support, and very much
appreciate the time you and others have put into SCons development.
If there is any other information I can provide that would help in
resolving this bug, please let me know.
Regards,
Ray
[1] https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
On 11/28/2016 11:26 AM, Bill Deegan wrote:
> Ray,
>
> Since you've not responded with a listing of the libs in your mingw
> install to help see if there is a standard for how to name versioned
> shared libraries under mingw I thought I would have to install it.
>
> Responding with "I'm not sure how the information you've asked for is
> relevant" is not a great way to get help on an issue you are facing.
> Please remember that you are not paying for support, if anyone asks for
> more information on your issue to help you, doesn't it seem reasonable
> to just provide it?
>
> Just because I can reproduce the issue in my environment doesn't mean
> that I know what the proper solution in your (mingw) environment is.
>
> Thanks,
> Bill
>
> On Sun, Nov 27, 2016 at 2:39 PM, Ray Speth <speth at darkmatter.mit.edu
> <mailto:speth at darkmatter.mit.edu>> wrote:
>
> I'm using MinGW-w64 [1], but not sure how much that has to do with
> it (given that the error can be triggered without even having MinGW
> installed).
>
> The SharedLibrary builder actually works reasonably well with
> Cygwin. In that case, I end up with:
>
> cygfoo-2-4-0.dll
> libfoo.dll.a -> libfoo-2-4-0.dll.a (symlink)
> libfoo-2-4-0.dll.a
>
> which can be linked to simply as '-lfoo'.
>
> Using MSVC, I don't seem to get any files with the version info in
> the name, but at least it compiles.
>
> Regards,
> Ray
>
> [1] https://sourceforge.net/projects/mingw-w64/
> <https://sourceforge.net/projects/mingw-w64/>
>
> On 11/27/2016 3:55 PM, Bill Deegan wrote:
>
> Yes dylib is because I ran your example on macosx.
>
> How did you install mingw? via cygwin? other?
>
> I can try installing on my system, but I'd like to replicate
> your install.
>
>
>
> On Sun, Nov 27, 2016 at 11:48 AM, 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:
>
> 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.
>
>
> Nope that's not the issue here.
>
> The issue seems to be the generated name of the versioned shared
> library.
> So either for mingw the SHLIBVERSION should be ignored, or the name
> format needs to change.
>
> If you comment out SHLIBVERSION='2.4' it works fine (at least on
> my mac).
>
> -Bill
>
>
>
> Regards,
> Ray
>
> [1]
>
> https://autotools.io/libtool/windows.html#libtool.windows.version <https://autotools.io/libtool/windows.html#libtool.windows.version>
>
> <https://autotools.io/libtool/windows.html#libtool.windows.version
> <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>
> <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:
>
> 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>>
> <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
> <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:
>
> 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>>
>
>
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>>
>
>
>
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>
>
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae
> <https://gist.github.com/speth/6f022116c3a1273952afe8167c6388ae>>
>
>
> <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>>>
> <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
> <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>
> <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
> <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>>>
> <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
> <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>
> <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
> <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>>
>
> <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>>>
>
>
> <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>>
>
> <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>> <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
> <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>>
>
> <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>>>
>
> <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>>
>
> <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>>
> <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
> <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>>
>
> <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>>>
>
> <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>>
>
> <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>>
> <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>>
>
> <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>>
> <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>>
>
> <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