[
https://issues.apache.org/jira/browse/STDCXX-895?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592483#action_12592483
]
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: https://issues.apache.org/jira/browse/STDCXX-895
> 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|http://docs.hp.com/en/B2355-90655/index.html] (see also [this
> document|http://docs.hp.com/en/B2355-90730/B2355-90730.html]) 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|http://docs.hp.com/en/B2355-90655/ch05s08.html]:
> {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, {{libA.sl}} points to
> {{libA.0}}:
> {noformat}
> ln -s libA.0 libA.sl libA.sl is a symbolic link to
> libA.0.
> {noformat}
> # Link applications as usual, using the {{-l}} option to specify libraries.
> The linker searches for {{libA.sl}}, 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.