Dear all,

I wish I knew better - howto use ld to craft an archive member, but I do not. (Below was sent to openssl-dev, if it arrived, please ignore for now - however, once I understand this AND if I figure out a "simple" change, I shall submit a patch for future AIX builds.)

===

To be compatible with the standard AIX libraries I would like to learn howto generate a single
".so" file that goes into the .a file.

FYI: AIX supports multiple versions of the ssl libraries using this convention:

root@x093:[/data/prj/openssl/openssl-0.9.8.27]ar tv /usr/lib/libcrypto.a | head
rwxr-xr-x 370769/647632 2192276 Nov 09 07:44 2009 libcrypto.so.0.9.8

michael@x054:[/data/prj/apache/httpd/test]ar tv /usr/lib/libcrypto.a
rwxrwxr-x 435159/781431 2965832 May 01 06:57 2014 libcrypto.so.1.0.0
rwxrwxr-x 435159/781431 2253655 May 01 06:58 2014 libcrypto.so.0.9.8

Members are, as expected, object modules
michael@x054:[/data/prj/apache/httpd/test]ar xv /usr/lib/libcrypto.a
x - libcrypto.so.1.0.0
x - libcrypto.so.0.9.8
michael@x054:[/data/prj/apache/httpd/test]file libcrypto*
libcrypto.so.0.9.8: executable (RISC System/6000) or object module not stripped libcrypto.so.1.0.0: executable (RISC System/6000) or object module not stripped

Unfortunately, the archive created by the tarball ./config and make are individual .o named object modules.

Again, for compatibility I would like to have them contained in a .so

root@x093:[/data/prj/openssl/openssl-0.9.8.27]ar tv libcrypto.a | head
rw-r--r--     0/0       6346 Aug 03 15:13 2014 cryptlib.o
rw-r--r--     0/0       8585 Aug 03 15:13 2014 dyn_lck.o
rw-r--r--     0/0      11602 Aug 03 15:13 2014 mem.o
rw-r--r--     0/0       1303 Aug 03 15:13 2014 mem_clr.o
rw-r--r--     0/0      13806 Aug 03 15:13 2014 mem_dbg.o
rw-r--r--     0/0       2048 Aug 03 15:13 2014 cversion.o
rw-r--r--     0/0      13170 Aug 03 15:13 2014 ex_data.o
rw-r--r--     0/0       2443 Aug 03 15:13 2014 tmdiff.o
rw-r--r--     0/0       1782 Aug 03 15:13 2014 cpt_err.o
rw-r--r--     0/0        630 Aug 03 15:13 2014 ebcdic.o

And applications expect the .so.$version as member name

michael@x054:[/data/prj/apache/httpd/test]dump -H /usr/sbin/sshd

/usr/sbin/sshd:

                        ***Loader Section***
                      Loader Header Information
VERSION#         #SYMtableENT     #RELOCent        LENidSTR
0x00000001       0x00000196       0x000008cc       0x0000006f

#IMPfilID        OFFidSTR         LENstrTBL        OFFstrTBL
0x00000006       0x00008fc0       0x00000dde       0x0000902f


                        ***Import File Strings***
INDEX  PATH                          BASE                MEMBER
0      /usr/lib:/lib
1                                    libc.a              shr.o
2                                    libcrypto.a         libcrypto.so.1.0.0
3                                    libz.a              libz.so.1
4                                    libpam.a            shr.o
5                                    libdl.a             shr.o

===

I am going to look in the ./config for a "shared" versus "not-shared" flag that I missed on my first attempt. All suggestions welcome!

Thanks for your assistance!

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to