2011-01-19 34 views
0

我试图在品牌建立一些新的软件安装CentOS 5.5克++ -lcurl说,它没有找到,但我可以看到它在-p LDCONFIG

我的编译行是:

g++ -I ../common/ -I ../readers/ -I ../writers/ -I /home/dcole/software/xerces-c-3.1.1/src -O3 -Wall -fopenmp -fPIC -o chipper chipper.cpp -L/usr/lib64/ ../../lib/IDT.a ../../lib/Linux/libxerces-c.a -lcurl -lidn -ldl -lssl ../../lib/Linux/libfftw3f.a -lpthread -lm 

和我得到

[exec] /usr/bin/ld: cannot find -lcurl 
[exec] collect2: ld returned 1 exit status 

即使我可以清楚地看到的lib

$ /sbin/ldconfig -p | grep curl 
     libcurl.so.3 (libc6,x86-64) => /usr/lib64/libcurl.so.3 
     libcurl.so.3 (libc6) => /usr/lib/libcurl.so.3 

那么为什么不能g ++看到它?

回答

3

在链接时,-lcurl告诉链接器寻找libcurl.so

从那里,库中的SONAME(libcurl.so.3)被嵌入到可执行文件中,并且这是执行时搜索的文件名。

您有libcurl.so.3,但可能缺少开发所需的libcurl.so

你的配置是什么?通常会有第二个包含开发头文件/库的软件包,与运行时间位分开。

+0

centos 5.5 - 所以你认为嘿没有安装开发包? – Derek 2011-01-19 18:33:14

+0

@Derek:是的。在CentOS上,(lib)cURL是通过`curl`包安装的,而它的开发头文件和库是通过压缩`curl-devel`安装的。 – ephemient 2011-01-19 19:06:33

0

从任何来源/usr/lib/libcurl.so复制该文件,并将其放置在/usr/lib/,然后尝试编译。它会解决。

相关问题