2

我正在尝试编译一个示例 C 程序并将其链接到一些静态库文件,使用:

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

(我确信上面的库文件和包含文件目录是正确的。)

我得到的错误是:

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

我有两个问题:

1) 是否正确使用 -L 和 -l 选项?

2)上面的错误是b/c gcc在错误的位置寻找库文件对吗?我试图$LD_LOAD_PATH通过我的终端设置来解决这个问题/usr/local/bin。我仍然收到上述错误。我该如何解决?

谢谢!

-罗汉。

4

1 回答 1

4

改用 -lsundials_cvode - 删除“lib”和“.a”部分

请注意,LD_LOAD_PATH 用于在运行时定位动态库,而不是在编译期间。

编辑:

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? 

这意味着您链接的库中没有其他需要解析的符号。请注意,您需要更改两个库(命令行上有两个)。也可能它们的顺序错误。

于 2012-11-20T23:01:39.947 回答