How do I add search paths to gcc

Eduardo Cerejo 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):
> LDFLAGS+=-L/usr/local
> LDFLAGS+=-lgtk
> 
> 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 mailing list