[Scons-users] Building versioned shared library fails when using MinGW

Bill Deegan bill at baddogconsulting.com
Sun Nov 27 15:55:41 EST 2016


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>
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
>
> 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
>>
>> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20161127/cab8b3cf/attachment-0001.html>


More information about the Scons-users mailing list