includes, configure, /usr/lib vs. /usr/local/lib, and linux coders

Daniel Eischen deischen at freebsd.org
Fri Oct 31 13:21:47 PDT 2008


On Fri, 31 Oct 2008, Nate Eldredge wrote:

> On Fri, 31 Oct 2008, Steve Franks wrote:
>
>> Let's backup.  What's the 'right' way to get a bloody linux program
>> that expects all it's headers in /usr/include to compile on freebsd
>> where all the headers are in /usr/local/include?  That's all I'm
>> really asking.  Specifically, it's looking for libusb & libftdi.  If I
>> just type gmake, it can't find it, but if I manually edit the
>> Makefiles to add -I/usr/local/include, it can.  Obviously, manually
>> editing the makefiles is *not* the right way to fix it (plus it's
>> driving me crazy).
>
> C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/include
> LIBRARY_PATH=$LIBRARY_PATH:/usr/local/lib
> export C_INCLUDE_PATH LIBRARY_PATH
> ./configure
> gmake
>
> Adjust as appropriate if using csh.
>
> Personally, I set those environment variables in my .profile.
>
> By the way, I think you're being a little unfair to blame this on Linux 
> programs or programmers.  Normally it's the user's responsibility to ensure 
> that their compiler searches for include files, etc, in the appropriate 
> place.  Many Linux distributions put everything in /usr/include, which is 
> searched by default.  FreeBSD puts stuff from ports in /usr/local/include 
> which isn't searched by default.  I find that behavior inconvenient, which is 
> why I set those environment variables, so I don't have to think about it.

I don't really care who's to blame (I'd guess I'd blame both
the Linux distros and the Linux application developers), but
the move to put everything in /usr/include and /usr/lib annoys
the heck out of me.  It blurs the line between the base OS and
installed 3rd party software.  Perhaps that's because Linux is
really just a kernel, and to the distributors - most, if not
all, of their software is 3rd-party.

It's really nice to be able to install 3rd-party software
so that it doesn't affect the base OS.  On FreeBSD, it's
easy enough just to 'rm -rf /usr/local' and start fresh
without having to worry about screwing up the base OS.

-- 
DE


More information about the freebsd-hackers mailing list