[illumos-Developer] Missing header file, lib file, etc.

Jason King jason.brian.king at gmail.com
Tue Oct 19 13:30:02 PDT 2010


On Tue, Oct 19, 2010 at 3:10 PM, Peter Tap <ptrtap at yahoo.com> wrote:
> Folks,
>
> While doing my development on Illumos, I found a few things missing in the
> installation that I wanted to bring to your attention.
>
> 1. /usr/lib/ contains the link for libdiskmgt.so. However, libdiskmgt.h is
> missing in /usr/include.
>
> 2. /usr/lib/ contains the link for "libavl.so.1" but not for "libavl.so."
>
> I found the same problem on OpenIndiana as well as OpenSolaris upgraded to
> build 147.
>
> I also had one more question for my knowledge. Command line iostat depends
> on libavl.so. If libavl.so is not present, how is iostat still working?
>
> Thank you in advance for your help.
>
> Regards,
> Peter

This is deliberate.  Certain libraries and interfaces are intended for
internal use (private), and aren't guaranteed to be compatible with
future versions.   Over the course of Opensolaris, libdiskmgmt
underwent some significant (and incompatible) changes.   I believe the
changes are also incompatible between Solaris 10 and Opensolaris as
well (so if you managed to compile something that used it on Solaris
10, it would break on Opensolaris, Illumos, or the upcoming Solaris
11). *solaris has a strong history about documenting when particular
interfaces can possibly change.  It's what gives it such a strong
history of backwards compatibility not often seen elsewhere.

That being said, just because a library is currently considered
private today doesn't mean it has to remain that way.  Often it's a
matter of 'this is new, we need time to work with it, see how it
actually works in practice and tweak it as needed'.  The new network
driver interface (GLDv3 aka Nemo) is an example of this -- it was
private for a long time as the kinks were worked out, but then later
was made public (technically the classification was 'uncommitted'
IIRC) so that 3rd parties can use the framework.  I'm not sure the
process for changing the classification has been hashed out for
Illumos yet, but probably something that will come with time.

Certainly one area I've found lacking with Solaris (and it's
successors) is a lack of a good hardware enumeration interface.  I
remember dealing with 3 E25ks that had a large number of fibre channel
and ethernet ports connected to them.  Trying to map what you saw in
the OS (i.e. eri0, c4tXdY, etc.) to a physical location was a
logistical nightmare (compounded by them being in a remote location,
so you had the issue of remote hands).

As for iostat, I believe /bin/ls uses LIB.so when linking, but the
runtime linker will use LIB.so.X when locating shared libraries.



More information about the Developer mailing list