From owner-freebsd-questions@FreeBSD.ORG Thu Jun 5 14:07:24 2008 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 423B2106567B for ; Thu, 5 Jun 2008 14:07:24 +0000 (UTC) (envelope-from kris@FreeBSD.org) Received: from weak.local (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 0CC4F8FC28; Thu, 5 Jun 2008 14:07:22 +0000 (UTC) (envelope-from kris@FreeBSD.org) Message-ID: <4847F31B.7090404@FreeBSD.org> Date: Thu, 05 Jun 2008 16:07:23 +0200 From: Kris Kennaway User-Agent: Thunderbird 2.0.0.14 (Macintosh/20080421) MIME-Version: 1.0 To: Tobias Hoellrich , freebsd-questions@freebsd.org References: <20080605132106.GA51988@mech-aslap33.men.bris.ac.uk> <20080605135015.GA52233@mech-aslap33.men.bris.ac.uk> In-Reply-To: <20080605135015.GA52233@mech-aslap33.men.bris.ac.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Subject: Re: size of executable - g95 vs gfortran42 - shared libs? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jun 2008 14:07:24 -0000 Anton Shterenlikht wrote: > On Thu, Jun 05, 2008 at 06:29:35AM -0700, Tobias Hoellrich wrote: >>> I use two different fortran90 compiler on a simple input file >>> and get executables which differ in size by almost 3 orders of >>> magnitude, see below. Is this something to do with the use >>> of shared libraries? >> Run "file" and "ldd" on the executables to see the difference: >> >> [root@santafe ~]# file `which ls` >> /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), >> for FreeBSD 8.0 (800038), dynamically linked (uses shared libs), >> FreeBSD-style, stripped >> >> [root@santafe ~]# ldd `which ls` >> /bin/ls: >> libutil.so.7 => /lib/libutil.so.7 (0x28082000) >> libncurses.so.7 => /lib/libncurses.so.7 (0x28090000) >> libc.so.7 => /lib/libc.so.7 (0x280cf000) >> [root@santafe ~]# > > Many thanks, the ldd resuts differ, > but how does this translate into size? > > % ls -al *out > -rwxr-xr-x 1 mexas wheel 546413 5 Jun 14:39 g95.out > -rwxr-xr-x 1 mexas wheel 9179 5 Jun 14:39 gf42.out > > % file *out > g95.out: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), > for FreeBSD 7.0 (700109), dynamically linked (uses shared libs), > FreeBSD-style, not stripped > > gf42.out: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), > for FreeBSD 7.0 (700109), dynamically linked (uses shared libs), > FreeBSD-style, not stripped Both files have debugging symbols enabled. You can remove these with strip, at the cost of not being able to use gdb to obtain backtraces if you run into a bug. > % ldd *.out > g95.out: > libm.so.5 => /lib/libm.so.5 (0x280c5000) > libc.so.7 => /lib/libc.so.7 (0x280db000) ^-- this one doesn't link to a dynamic fortran library, so it is presumably statically linked, explaining the size. Look into how the file was constructed (e.g. the command used to link the binary). > gf42.out: > libgfortran.so.2 => /usr/local/lib/gcc-4.2.4/libgfortran.so.2 (0x2807e000) > libm.so.5 => /lib/libm.so.5 (0x28103000) > libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28119000) > libc.so.7 => /lib/libc.so.7 (0x28124000) > % > Kris