[Issue 18506] New: pragma(lib, xxx) can cause issues when library is to be found outside OS standard library search path

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Feb 23 14:49:37 UTC 2018


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

          Issue ID: 18506
           Summary: pragma(lib, xxx) can cause issues when library is to
                    be found outside OS standard library search path
           Product: D
           Version: D2
          Hardware: All
                OS: FreeBSD
            Status: NEW
          Severity: minor
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: dkgroot at talon.nl

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

--


More information about the Digitalmars-d-bugs mailing list