Determine FreeBSD version of binary

Dan Nelson dnelson at allantgroup.com
Thu Nov 8 15:36:37 PST 2007


In the last episode (Nov 08), Erik Osterholm said:
> On Thu, Nov 08, 2007 at 03:47:54PM -0600, Dan Nelson wrote:
> > In the last episode (Nov 08), John Smith said:
> > > On Nov 8, 2007 6:59 PM, Yuri Pankov <yuri.pankov at gmail.com> wrote:
> > > > May be not entirely correct, but close:
> > > >
> > > > ldd binary | grep libc.so
> > > 
> > > Yes, that helps somewhat. At least I now know that it's FreeBSD
> > > 4.x. And before I again forget something I forgot to mention
> > > earlier on: I also have a file called 'kernel'. Could that
> > > somehow give somewhat more detailed information about exactly
> > > which 4.x kernel it is, and if so, how would I go about doing
> > > that ?
> > 
> > Run "strings /kernel | tail" on it.
> > 
> > There's also a better way to determine the FreeBSD version an
> > executable was built for.  As long as you didn't build world with
> > -O2, the "file" command can print it.  Note that you will need to
> > run a 5.x or newer version of file, since even though 4.x puts the
> > version in each binary, its file command doesn't print it.
> > 
> > $ file /bin/ls
> > /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 7.0 (700052), dynamically linked (uses shared libs), FreeBSD-style, stripped
> > $ file /mnt/oldsystem/bin/ls
> > /mnt/oldsystem/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1, for FreeBSD 4.2, statically linked, stripped
> > 
> > If you like building with -O2, apply the patch in PR 101590.
> 
> Interesting.  Does 6.2/amd64 build with -O2 by default?

The default was switched from -O to -O2 in src/share/mk/sys.mk r1.81,
which was before 6.x was branched, so none of the 6.x releases have
versions in their executables.
 
> $ file /bin/ls
> /bin/ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), dynamically linked (uses shared libs), stripped
> 
> This was after a buildworld with no special options added, and
> nothing affecting the kernel in make.conf.

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list