HOST MACHINE and OPERATING SYSTEM:
Any
TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
Not different.
COMPILER NAME AND VERSION (AND PATCHLEVEL):
Any
THE $ACE_ROOT/ace/config.h FILE:
Any
THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE:
Any
CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features:
Does not exist.
AREA/CLASS/EXAMPLE AFFECTED:
Building ACE (and TAO) is affected.
DOES THE PROBLEM AFFECT:
COMPILATION? No
LINKING? Yes
EXECUTION? No
OTHER (please specify)?
SYNOPSIS:
When linking with static_libs_only=1 against its own libraries, ACE might link against a dynamic library instead of the static one.
DESCRIPTION:
When using static_libs_only=1, ACE and TAO link against their own libraries this way:
$ACE_ROOT/lib/libAla.a -lAla
If the dynamic libraries have been built previously in the same tree, then the linker will choose libAla.so.
I know that this might be considered as an unsupported feature (dynamic and static builds in the same tree), but the fix is really simple.
REPEAT BY:
Build ACE with shared_libs_only=1. The build it with static_libs_only=1 in the same tree. Check how $ACE_ROOT/bin/gperf is linked agains the ACE
library (it is dynamically linked).
SAMPLE FIX/WORKAROUND:
I have attached a patch.