g ++ -lcurl说找不到它,但我可以在ldconfig -p中看到它

时间:2011-01-19 18:26:27

标签: c++ linker

我正在尝试在全新安装的CentOS 5.5上构建一些软件

我的编译行是:

 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 ++不能看到它?

2 个答案:

答案 0 :(得分:3)

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

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

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

您的发行版是什么?通常会有第二个包含开发头/库的包,与运行时位分开。

答案 1 :(得分:0)

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