Determine FreeBSD version of binary

Dan Nelson dnelson at allantgroup.com
Thu Nov 8 13:48:03 PST 2007


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.

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-questions mailing list