How do I add search paths to gcc
ejcerejo at optonline.net
Mon Mar 24 19:01:07 PDT 2008
On Fri, 21 Mar 2008 18:31:54 -0400
Chuck Robey <chuckr at chuckr.org> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> mdh wrote:
> > --- Eduardo Cerejo <ejcerejo at optonline.net> wrote:
> >> My gcc is only looking in /usr/lib and /usr/include
> >> for libraries and hearders and I added the paths
> >> /usr/local/lib/ and /usr/local/include to my .cshrc
> >> file:
> >> set path = (/sbin /bin /usr/sbin /usr/bin /usr/games
> >> /usr/local/sbin /usr/local/bin /usr/local/lib
> >> /usr/local/include $HOME/bin)
> > PATH in the environment is where your shell searches
> > for programs to run from the command line, system(),
> > etc. This allows you to type, say, `sh` instead of
> > having to type out `/bin/sh` or risking having
> > `/home/somekiddie/sh` run instead when you type it.
> >> but I still have to use gcc with -I and -L switch
> >> for a program to compile or else it will fail.
> >> I'm using tcsh.
> > There are two ways to set up alternate places to find
> > libraries. The first is ldconfig, and you can see
> > ports run this when you install a port containing
> > shared libraries for example. The other is to use the
> > LD_LIBRARY_PATH environment variable to set alternate
> > paths at run-time.
> Well, that might be taken as confusing, even though your info is technically
> quite correct. Both those methods WILL get those added dirs searched for
> loading the libraries at run time, BUT it will NOT get your compiler to find the
> new paths, when linking the program during the build. I'm fairly sure that's
> what the person wanted, don't you think so?
> Because, if I'm wrong, you can delete this email right here and now, read no more.
> BUT you were quite correct, there are definitely *at least* two methods to set
> up your *compiler* library search paths. In fact, I think I can show you 3
> methods right now.
> First, you can list the full path of the library on the command line, when you
> use your compiler to link your program.
> Second, you can (as the person suggested himself) you can use the -l/-L options
> to bring in libraries & paths. The -L should come first, it adds the path, and
> the -l afterwards adds the specific library.
> The 3rd method is the use the variables LDFLAGS and LDADD. These variables are
> NOT 100% reliable to use, although they are fairly reliable on BSD systems. The
> LDFLAGS is where you put your "-LExtraPath" and the LDADD is where you stick
> the -lExtraLibrary, like this (from a Makefile example):
> If you are using the BSD make util, the you use "+=" to add to your variables,
> instead of replacing them, in case they had some values in them to begin with.
> "Make" automatically adds in the obvious spaces, so your definitions don't have
> a train wreck for you.
> > The 'ldconfig(1)' man page has more info for you.
> > Take care, mdh
After searching quite a bit I found someone looking for same thing running tcsh (not freebsd) and the solution was running or adding these lines to .cshrc.
setenv C_INCLUDE_PATH "/usr/local/include"
setenv LIBRARY_PATH "/usr/local/lib"
this did the trick for gcc
More information about the freebsd-questions