| From nobody Wed Jul 2 19:28:31 1997 |
| X-From-Line: norm@connectware.ca Wed Jul 02 22:32:39 1997 |
| Return-Path: <norm@connectware.ca> |
| Delivered-To: gord@profitpress.com |
| Received: (qmail 5508 invoked from network); 2 Jul 1997 22:32:38 -0000 |
| Received: from localhost (HELO bambam.m-tech.ab.ca) (127.0.0.1) |
| by localhost with SMTP; 2 Jul 1997 22:32:38 -0000 |
| X-POP3-Rcpt: gord@bambam |
| Return-Path: norm@connectware.ca |
| Received: from bunker.connectware.ca (norm.HIP.CAM.ORG [199.84.42.109]) by m-tech.ab.ca (8.6.12/8.6.9) with ESMTP id KAA07116 for <gord@m-tech.ab.ca>; Wed, 2 Jul 1997 10:12:18 -0600 |
| Received: from castle.connectware.ca (castle.connectware.ca [204.19.223.2]) |
| by bunker.connectware.ca (8.8.5/8.8.5) with SMTP id MAA02233 |
| for <gord@m-tech.ab.ca>; Wed, 2 Jul 1997 12:15:54 -0400 (EDT) |
| Received: by castle.connectware.ca (AIX 3.2/UCB 5.64/4.03) |
| id AA21851; Wed, 2 Jul 1997 12:08:56 -0400 |
| Date: Wed, 2 Jul 1997 12:08:53 -0400 (EDT) |
| From: Normand McGuire <norm@connectware.ca> |
| To: Gordon Matzigkeit <gord@m-tech.ab.ca> |
| Subject: Re: -lc_s shared libraries |
| In-Reply-To: <86yb7qipsd.fsf_-_@trick.profitpress.com> |
| Message-Id: <Pine.A32.3.91.970702113816.24858A-100000@castle.connectware.ca> |
| Mime-Version: 1.0 |
| Content-Type: TEXT/PLAIN; charset=US-ASCII |
| Xref: trick.profitpress.com mail.libtool:299 |
| Lines: 113 |
| X-Gnus-Article-Number: 1 Mon Nov 2 17:19:44 1998 |
| |
| |
| |
| On 1 Jul 1997, Gordon Matzigkeit wrote: |
| |
| > Are you sure that on SCO Openserver 5 you need to specify |
| > /lib/libc.so? From what I understood about that platform, specifying |
| > `-lc' (which is what the C compiler does by default) is good enough, |
| > and links in the shared version if it exists. |
| |
| >From my experience, definitely. Look below. |
| |
| > Do you know otherwise? Can you show the results of specific tests to |
| > me that would prove your point? |
| |
| Here is a sample of a session demonstrating this on my system. I show the |
| source code, default cc file and three compiles with three a.out file |
| sizes. See for yourself: |
| |
| Script started on Wed Jul 2 11:21:58 1997 |
| $ cat t.c |
| main() |
| |
| { |
| printf("Hello, world\n"); |
| } |
| $ cat /etc/default/cc |
| # @(#) cc.default 20.1 94/12/04 |
| # |
| # Copyright (C) The Santa Cruz Operation, Inc. 1994-1995. |
| # This Module contains Proprietary Information of |
| # The Santa Cruz Operation, and should be treated as Confidential. |
| # |
| # Core development /bin/cc reads /etc/default/cc. |
| # Cross development /usr/ods30/bin/cc reads /etc/default/crossdevcc. |
| # If a prefix is specified, cc reads /etc/default/<prefix>cc instead. |
| # |
| FLAGS= |
| LIBS= |
| $ cc t.c |
| $ l a.out |
| -rwxrwxr-x 1 root sys 46334 Jul 2 11:22 a.out |
| $ cc t.c -lc |
| $ l a.out |
| -rwxrwxr-x 1 root sys 46334 Jul 2 11:22 a.out |
| $ cc t.c /lib/libc.so |
| $ l a.out |
| -rwxrwxr-x 1 root sys 3988 Jul 2 11:22 a.out |
| $ exit |
| |
| script done on Wed Jul 2 11:22:32 1997 |
| |
| And believe me, this script session is not a fake. |
| |
| > The reason I'm asking is that I, too, would like to know how Autoconf |
| > packages can best take advantage of shared libraries, especially in a |
| > general, rather than a test-by-test way. |
| |
| The section of my configure.in script that takes care of shared libraries |
| is short and not annoying to repeat. You may want to incorporate it into |
| the AC_PROG_CC macro or create a new one for it. So far, I've seen only |
| two kinds of behaviors regarding shared libraries: if they are not used |
| automatically when invoking cc, just include them when linking the |
| program. And it worked so far. However, you guys may have a whole lot |
| more flavors of system to run on compared to me. |
| |
| Here is the portion of the shared library check in my configure.in script: |
| |
| # STEP 2 - Check for libraries |
| |
| AC_MSG_CHECKING([for libc.so]) |
| if test -r /lib/libc.so; then |
| AC_MSG_RESULT([yes (/lib/libc.so)]) |
| LIBS="$LIBS /lib/libc.so" |
| elif test -r /usr/lib/libc.so; then |
| AC_MSG_RESULT([yes (/usr/lib/libc.so)]) |
| LIBS="$LIBS /usr/lib/libc.so" |
| else |
| AC_MSG_RESULT(no) |
| AC_CHECK_LIB(c_s, main) |
| fi |
| |
| > Could you be more specific when you mention `some other System V Unix |
| > systems'? What are their canonical system names (i.e. *-*-sco3.2v4*)? |
| |
| By 'some other Unix systems' requiring that you explicitely specify the |
| shared library name when linking the program, I meant specifically: |
| |
| o Bull Open Software (Unix System V Release 4, but don't remember if it is x86) |
| |
| o Interactive Unix System V/386 all versions |
| |
| o SCO Unix 3.2v4 and SCO OpenServer 5 |
| |
| o Sun Solaris 2.3 / SunOS 5.3 |
| |
| All others that we've compiled and run on will automatically use shared |
| libraries when available, namely: |
| |
| IBM's AIX 3.2.* and 4.* |
| HP's HPUX 8.*, 9.* and 10.* |
| DEC Ultrix, OSF/1 and DEC Unix all versions tried |
| DataGeneral's DGUX all versions tried |
| Sequent's DYNIX/ptx 2.1 and 4 |
| Linux all versions tried |
| SGI's Irix all versions tried |
| NCR and AT&T Unix System V/386 Release 4 |
| Sun Solaris 2.4 (SunOS 5.4) and Solaris 2.5 (SunOS 5.5) |
| SunOS 4.1* |
| Unisys Unix System V/386 |
| Unixware all versions |
| |
| Normand McGuire |
| |