[ 
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.

Reply via email to