stdcxx-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <>
Subject [jira] Commented: (STDCXX-895) [HP-UX] use the +h ld option to record internal library name
Date Fri, 25 Apr 2008 19:49:55 GMT


Martin Sebor commented on STDCXX-895:

Also, it's recommended that on HP-UX/IPF the shared library extension be {{.so}} rather than
the {{.sl}} that's conventional on PA-RISC. We should make the change when appropriate (probably
4.3) and perhaps provide a {{.sl}} link for compatibility.

> [HP-UX] use the +h ld option to record internal library name
> ------------------------------------------------------------
>                 Key: STDCXX-895
>                 URL:
>             Project: C++ Standard Library
>          Issue Type: New Feature
>          Components: Build
>    Affects Versions: 4.2.0, 4.2.1
>         Environment: HP-UX
>            Reporter: Martin Sebor
>            Priority: Critical
>             Fix For: 4.2.2
>   Original Estimate: 2h
>  Remaining Estimate: 2h
> The [HP-UX Linker and Libraries User's Guide: HP 9000 Computers|]
(see also [this document|]) recommends using
the linker's +h ??internal_name?? option to designate the internal name of the library. We
should follow that recommendation.
> Quoting from [Version Control with Shared Libraries|]:
> {quote}
> h3. +Library-Level Versioning+
> HP-UX 10.0 adds a new library-level versioning scheme that allows you to maintain multiple
versions of shared libraries when you make incompatible changes to the library. By maintaining
multiple versions, applications linked with the older versions continue to run with the older
libraries, while new applications link and run with the newest version of the library. Library-level
versioning is very similar to the library versioning on UNIX System V Release 4.
> h4. +How to Use Library-Level Versioning+
> To use library-level versioning, follow these steps:
> # Name the first version of your shared library with an extension of {{.0}} (that's the
number zero), for example {{libA.0}}. Use the {{+h}} option to designate the internal name
of the library, for example, {{libA.0}}:
> {noformat}
>       ld -b *.o -o libA.0 +h libA.0      Creates the shared library libA.0. 
> {noformat}
> # Since the linker still looks for libraries ending in {{.sl}} with the {{-l}} option,
create a symbolic link from the usual name of the library ending in {{.sl}} to the actual
library. For example, {{}} points to {{libA.0}}:
> {noformat}
>       ln -s libA.0        is a symbolic link to libA.0.
> {noformat}
> # Link applications as usual, using the {{-l}} option to specify libraries. The linker
searches for {{}}, as usual. However, if the library it finds has an internal name,
the linker places the internal name of the library in the executable's shared library dependency
list. When you run the application, the dynamic loader loads the library named by this internal
name. For example:
> {noformat}
>       ld /opt/langtools/lib/crt0.o prog.o -lA -lc Binds a.out with libA.0.
> {noformat}
> {quote}

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message