I don't get it. I usually install third party software into */usr/local* so libraries are installed into /usr/local/lib and never had problems linking to these libraries. But now it suddenly no longer works:

```
$ gcc -lkaytils -o test test.c
/usr/bin/ld.gold.real: error: cannot find -lkaytils
/usr/bin/ld.gold.real: /tmp/ccXwCkYk.o: in function main:test.c(.text+0x15):
error: undefined reference to 'strCreate'
collect2: ld returned 1 exit status

```

When I add the parameter `-L/usr/local/lib` than it works but I never had to use this before. Header files in */usr/local/include* are found without adding `-I/usr/local/include`.

I'm using Debian GNU/Linux 6 (Squeeze) which has an entry for */usr/local/lib* in */etc/ld.so.conf.d/libc.conf* by default and the ldconfig cache knows the library I'm trying to use:

```
k@vincent:~$ ldconfig -p | grep kaytils
        libkaytils.so.0 (libc6,x86-64) => /usr/local/lib/libkaytils.so.0
        libkaytils.so (libc6,x86-64) => /usr/local/lib/libkaytils.so

```

So what the heck is going on here? Where can I check which library paths are searched by gcc by default? Maybe something is wrong there.
['https://Stackoverflow.com/questions/5873516', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/274473/']
gcc -print-search-dirs will tell you what path the compiler checks. /usr/local/lib is simply not among them, so your compile time linker (in this case the new gold ld from binutils) doesn't find the library while the dynamic one (ld-linux.so which reads the cache written by ldconfig) does. Presumably the builds you've done previously added -L/usr/local/lib as necessary in their makefiles (usually done by a ./configure script), or you installed binaries.
This is probably an issue of environment variables - you have something set that's including /usr/local/include but not /usr/local/lib

From the GCC mapage on environment variables

```
       CPATH specifies a list of directories to be searched as if speci‐
       fied with -I, but after any paths given with -I options on the com‐
       mand line.  This environment variable is used regardless of which
       language is being preprocessed.

```

and

```
       The value of LIBRARY_PATH is a colon-separated list of directories,
       much like PATH.  When configured as a native compiler, GCC tries
       the directories thus specified when searching for special linker
       files, if it can’t find them using GCC_EXEC_PREFIX.  Linking using
       GCC also uses these directories when searching for ordinary
       libraries for the -l option (but directories specified with -L come
       first).

```

try "printenv" to see what you have set