mfu
mfu

Reputation: 41

How to link shared library in Makefile

I am trying to make the following makefile on olaris SPARC

CC=/usr/sfw/bin/gcc

INCPATH=/export/home/compkvar/compile/inc
LIBPATH=/export/home/compkvar/compile/lib
SOURCEPATH=/export/home/compkvar/compile/src

.c.o:
        $(CC) -c $< $(INCPATH) -I.


PSOURCE = driver.c

driver : driver.o 
                $(CC) -I$(INCPATH) -L$(LIBPATH) -o driver driver.c -lprivate 

all : driver

clean :
    rm driver.o driver

but i got error the following ;

/usr/sfw/bin/gcc -I/export/home/compkvar/compile/inc -L/export/home/compkvar/compile/lib -o driver driver.c -lprivate 
Undefined                       first referenced
 symbol                             in file
isinf                               /export/home/compkvar/compile/lib/libprivate.so
ld: fatal: Symbol referencing errors. No output written to driver
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `driver'

libprivate.so shared library is exist under '/export/home/compkvar/compile/lib' path but it couldn't found:

bash-3.00$ pwd
/export/home/compkvar/compile/lib
bash-3.00$ ls -latr
total 14116
drwxr-xr-x   2 compkvar other        512 Sep 12 15:34 .
drwxr-xr-x   5 compkvar other        512 Sep 12 15:34 ..
-rwxrwxrwx   1 compkvar other     761180 Sep 12 15:43 libprivate.so
-rwxrwxrwx   1 compkvar other    2275492 Sep 12 15:43 libPricingFunctions.so
-rwxrwxrwx   1 compkvar other    1104576 Sep 12 15:43 libprfUtilities.a
-rwxrwxrwx   1 compkvar other    2275492 Sep 12 15:43 libPricingFunctions.so.1
-rwxrwxrwx   1 compkvar other     761180 Sep 12 15:43 libprivate.so.1
bash-3.00$ 

Thanks in advance.

Upvotes: 4

Views: 22127

Answers (1)

user1969104
user1969104

Reputation: 2420

isinf is part of math library. Try including -lm.

$(CC) -I$(INCPATH) -L$(LIBPATH) -o driver driver.c -lprivate -lm

Upvotes: 4

Related Questions