【发布时间】:2014-11-08 10:39:00
【问题描述】:
我正在尝试运行以下 g++ 命令
gcc client.cc -o client -I$(CURRENTPATH)/curl-7.38.0/include/ -L$(CURRENTPATH)/lib/libcurl.so -lcurl
但得到这个错误:
/usr/bin/ld: cannot find -lcurl collect2: ld returned 1 exit status
libcurl.so 位于 ./lib 我试过使用 libcurl.so 和 lib/libcurl.so.4 和 lib/libcurl.so.4.3.0 但总是得到相同的错误。
我无权访问 /usr
我还将 LD_LIBRARY_PATH 设置为包含 ./lib(完整路径)
有什么想法吗?
我的理解是 -L 指定非传统的库路径,并且 LD_LIBRARY_PATH 确定编译器将在哪里查找它们。
【问题讨论】:
-
-L后面不应该有目录路径吗? -
您能否在问题中包括为什么您使用自定义目录而不是 libcurl 的系统安装?
-
加上一个关于 LD_LIBRARY_PATH 的注释,它用于动态链接器,即它在您运行可执行文件时使用,而不是在您构建它时使用。另外,我建议您至少使用一个极简的 make 文件设置
CFLAGS和LDFLAGS,仅此而已,让您可以运行make client。 -
使用
g++而不是gcc来编译或链接C++ 代码。
标签: c++ c curl linker libraries