Skip to content
This repository was archived by the owner on Sep 4, 2019. It is now read-only.
This repository was archived by the owner on Sep 4, 2019. It is now read-only.

Shared libraries reference dependencies with absolute paths #11

@arrrow-pk

Description

@arrrow-pk

Not too sure of the scope of this problem but I am building on Mac OSX for QNX and I noticed that the generated shared object files referenced their dependencies with absolute paths. I.e. ntoarmv7-objdump on libboost_thread.so lists "bin.v2/libs/system/build/qcc/release/target-os-qnxnto/threading-multi/libboost_system.so.1.52.0" in the dependencies section irrespective of the hardcode-dll-path option. This caused problems when trying to deploy the lib to a device. On digging further it seems that HAVE_SONAME is missing from qcc.jam which is causing the -Wl flag to be excluded from the link command in the "actions link.dll bind LIBRARIES" section. Removing HAVE_SONAME solves the problem, i.e:

--- a/tools/build/v2/tools/qcc.jam
+++ b/tools/build/v2/tools/qcc.jam
@@ -232,5 +232,5 @@ rule link.dll ( targets * : sources * : properties * )

actions link.dll bind LIBRARIES
{

  • "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" $(HAVE_SONAME)-Wl,-h$(SPACE)-Wl,$(<[1]:D=) -shared "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
  • "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,-R$(SPACE)-Wl,"$(RPATH)" -o "$(<)" -Wl,-h$(SPACE)-Wl,$(<[1]:D=) -shared "$(>)" "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FINDLIBS-SA) $(OPTIONS)
    }

Hopefully this helps someone else save some time :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions