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