Skip to content

pragma(lib, xxx) can cause issues when library is to be found outside OS standard library search path #4504

Open
@dlangBugzillaToGithub

Description

@dlangBugzillaToGithub

Diederik reported this on 2018-02-23T14:49:37Z

Transferred from https://issues.dlang.org/show_bug.cgi?id=18506

Description

standard/conventional
---------------------
On BSD the /usr/local/lib directory is a conventional path to put libraries, it is however not a default path. ie: It is not searched by default when linking binaries. It normally needs to be specified manually (via LDFLAGS) when linking. 

However It is one of the default search paths when loading dynamic libraties (ie: ld.so) (which is a little strange but it is the way it is).

Potential resolution:
If you guys think we should re-use the same paths used for dynamic loading, we could parse the ldconfig settings, (via /usr/include/aout-hints.h and /usr/include/elf-hints.h), so that we can add these paths to search for -llibname / pragma(lib) during linking. 

Note: on bsd ldconfig uses a binary file (ie: /var/run/ld-elf.so.hints), which needs to be read using the headers mentioned above. This method differs from the way linux does work.

Note: There is no way to suppress pragma(lib, "xxx") from the commandline (issue/6605), to get around the issue.

Links:
https://github.com/dlang/tools/pull/316
https://forum.dlang.org/post/lsqudbuxrnvlbwhlxrnr@forum.dlang.org

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions