Okay, that looks doable. I'll see how this works out. Thanks very much for the info!
-----Original Message----- From: Pieter de Goeje [mailto:pie...@degoeje.nl] Sent: Saturday, February 06, 2010 5:28 PM To: freebsd-questions@freebsd.org Cc: Peter Steele Subject: Re: What is easiest way to build a BSD 8 binary on a BSD 7 box? On Saturday 06 February 2010 20:22:13 Peter Steele wrote: > I have a BSD 7 system with the full BSD 8 sources loaded on it, and we > use this box to build our custom BSD 8 kernel and tools. We do not > install the custom code on the BSD 7 box but simply collect the > artifacts as a basis for our custom BSD 8 image. I have a standalone > tool that has previously been built on this same BSD 7 system, but it > just uses gcc and links against the normal BSD 7 libraries that are located > on this box. > > When we run this tool on a BSD 7 box it works fine. However, we've > discovered one function it performs doesn't work properly. It uses > kvm_read to collect network statistics and apparently applications > that use this function have to be linked against the libraries of the actual > target OS. > One easy solution of course is to build our tool on a BSD 8 box, and > in the long run we'll likely go that route as we move away from BSD 7. > Right now though our build server is BSD 7 and we need to build this > tool against BSD > 8 libraries. This obviously can be done since "make world" does > exactly that-it builds everything against 8.0 objects even if the > build is done on a BSD 7 box. > > Without dissecting the magic going on in "make world", can any explain > how I could do the same thing with my standalone tool? Specifically, > build it on a BSD 7 box but link it against BSD 8 libraries. The easiest way would probably be the following. # SOMEDIR=/path/to/fbsd8buildenv # mkdir -p ${SOMEDIR} # cd /path/to/FreeBSD-8.0/src # make buildworld # make installworld DESTDIR=${SOMEDIR} Then adding --sysroot=${SOMEDIR} to all invocations of gcc/ld and/or liberal use of -I and -L gcc options should do the trick. For example: # export CFLAGS="-I${SOMEDIR}/usr/include -L${SOMEDIR}/lib -L${SOMEDIR}/usr/lib # make Regards, Pieter de Goeje _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"