My question was:
>
> I have a library built under Sun OS 4.1.3. My people need to link with it
> under Solaris 2.4. They keep getting the following error:
>
> ld: fatal: file libLeHooks.a: unknown type, unable to process using elf(3E) libraries
> ld: fatal: File processing errors. No output written to plotimage
> *** Error code 1
>
> Must I do something special to link Solaris 1.x libraries with Solaris 2.x?
>
Summarized answers:
Bottom line: No, Solaris 1.x libraries cannot be used with Solaris 2.x.
Solaris 2.x libraries use ELF format, unlike Solaris 1.x libraries which uses
coff (a.out) format.
Other reasons supplied by Casper Dik <casper@Holland.Sun.COM>:
- a different object format (the lesser problem)
- different naming converntions (a.out objects have "_" prepended
to symbols)
- compiled with a different set of include files & constants
the SunOS 4.x code expects different constants (such as SOCK_STREAM)
and different structure types (like struct stat/ FILE*)
Workarounds:
- Recompile the libraries under Solaris 2.x if source available.
- Obtain Solaris 2.x versions of the libraries from the vendor.
- Build a Solaris 1.x binary from a Solaris 1.x host or cross-linker
(like GNU's ld), and use Solaris 2.x's binary compatibility mode to
run the executable.
- Somehow get GNU's linker to read Solaris 1.x's coff formatted libraries
and still produce a Solaris 2.x binary. It is not known if this was a
viable solution.
Thanks to:
Kevin Sheehan <Kevin.Sheehan@uniq.com.au>
Stephen Harris <sweh@mpn.com>
Richard Pieri <ratinox@unilab.dfci.harvard.edu>
Guy Harris <guy@netapp.com>
Edward C. Zimmermann <edz@bsn.com>
Casper Dik <casper@Holland.Sun.COM>
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:10:30 CDT