2011-01-19 77 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/,然後嘗試編譯。它會解決。

相關問題