Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ace-bugs] Stock build system: Cygwin and dynamic libraries

19 views
Skip to first unread message

Vladimir Panov

unread,
Feb 15, 2006, 4:24:33 PM2/15/06
to
ACE VERSION: 5.4.9

HOST MACHINE and OPERATING SYSTEM:
x86, Cygwin, Microsoft Windows

TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
Not different.

COMPILER NAME AND VERSION (AND PATCHLEVEL):
GCC 3.4.4

THE $ACE_ROOT/ace/config.h FILE:
config-cygwin32.h

THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
platform_cygwin32.GNU

CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features:
Does not exist.

AREA/CLASS/EXAMPLE AFFECTED:
Building programs agains ACE (and TAO) is affected.

DOES THE PROBLEM AFFECT:
COMPILATION? No
LINKING? No
EXECUTION? No
OTHER (please specify)?
Linking programs against ACE (and TAO) is affected.

SYNOPSIS:
ACE stock build system doesn't take into account the "import libraries" feature of Microsoft Windows.

DESCRIPTION:
Under Windows (Cygwin included) a dynamic library consists of two files:
name.DLL - the dynamic library itself (used only on runtime)
name.A (or name.LIB outside of Cygwin) - an import library (used only during linking)

The import libraries are needed when linking, so they should be in the lib directory. The DLL files must be in a directory which is included in $PATH,
so it makes sense to put them in the bin directory.
But the stock build system puts the DLL files in the lib directory, and does nothing about the import libraries (it just leaves them scattered
throughout the build tree).

REPEAT BY:
Build ACE under Cygwin. Try to link and run a program against it non-statically.

SAMPLE FIX/WORKAROUND:
I have attached a patch. It doesn't look very nice, but works for me.


Disclaimer: I am not a Windows programmer, so if I have written some big nonsense above - please, excuse me.

cygwin.patch
0 new messages