GigaRohan
GigaRohan

Reputation: 747

cannot find library error when using gcc

I am trying to compile an example C program and link it to some static library files using:

gcc -I /usr/local/include -L /usr/local/lib -l libsundials_cvode.a -l libsundials_nvecserial.a cvRoberts_dns.c -o cvRoberts_dns.o

(I am sure that the library files and include files directories above are correct.)

The error I get is:

/usr/bin/ld: cannot find -llibsundials_cvode.a
collect2: ld returned 1 exit status

I have two questions:

1) Am using the -L and -l options correctly?

2) The above error is b/c gcc is looking for the library file in the wrong location right? I tried to fix this by setting $LD_LOAD_PATH via my terminal to /usr/local/bin. I still get the above error. How do I fix this?

Thanks!

-Rohan.

Upvotes: 2

Views: 2408

Answers (1)

William Morris
William Morris

Reputation: 3684

Try -lsundials_cvode instead - delete the 'lib' and '.a' parts

Note that LD_LOAD_PATH is for locating dynamic libraries at run-time, not during compilation.

Edit:

I just tried that. The change addresses the cannot find library error but 
now I am faced with many "undefined reference to" errors. Does this mean 
the linking of the library files has failed somehow? How do I correct this? 

It means that there are other symbols that need to be resolved that are not in the library you linked. Note that you need to change both libraries (you have two on the command line). Also perhaps they are in the wrong order.

Upvotes: 4

Related Questions