[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: VPATH/vpath: does it work for -l<libname> prereqs?
From: |
John Graham-Cumming |
Subject: |
Re: VPATH/vpath: does it work for -l<libname> prereqs? |
Date: |
Tue, 22 Nov 2005 20:09:58 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040208 Thunderbird/0.5 Mnenhy/0.6.0.104 |
Matt England wrote:
VPATH/vpath: does it work for -l<libname> prereqs?
Yes, but there's special handling of this syntax detailed in the GNU
Make manual section "Directory Search for Link Libraries" and I quote:
"When a prerequisite's name has the form `-lNAME', `make' handles it
specially by searching for the file `libNAME.so' in the current
directory, in directories specified by matching `vpath' search paths
and the `VPATH' search path, and then in the directories `/lib',
`/usr/lib', and `PREFIX/lib' (normally `/usr/local/lib', but
MS-DOS/MS-Windows versions of `make' behave as if PREFIX is defined to
be the root of the DJGPP installation tree).
If that file is not found, then the file `libNAME.a' is searched
for, in the same directories as above."
You might like to post a snippet of Makefile so that people here can
help you debug. Here's a sample that does work:
all: my_executable
my_executable: -lm
link_it $@ $^
(Run with -n since link_it isn't a real program :-)
% make -n
link_it my_executable /usr/lib/libm.so
Now suppose there's a libm.so in the current directory you'll see:
% make -n
link_it my_executable /usr/lib/libm.so
Or suppose there's a libm.so in ./subdir and you do
% make -n VPATH=./subdir
link_it my_executable ./subdir/libm.so
Or even add 'vpath %.so ./subdir' to the Makefile:
% make -n
link_it my_executable ./subdir/libm.so
Now one thing to watch for is if your library is a .a and has the same
name as a .so the search order used by GNU Make (see above) will cause
the .so to be found and used first. If that's a problem then you can
either stop using the -l syntax, or you can fiddle with .LIBPATTERNS so
that the search happens in the opposite order.
John.
--
John Graham-Cumming
address@hidden
Home: http://www.jgc.org/
POPFile: http://getpopfile.org/
GNU Make Standard Library: http://gmsl.sf.net/
Fast, Parallel Builds: http://www.electric-cloud.com/
Sign up for my Spam and Anti-spam Newsletter
at http://www.jgc.org/
PGP key: http://www.jgc.org/pgp/