我使用以下命令克隆存储库后编译了curl:
./buildconf
./configure --with-libssh2
make
sudo make install
但是,在 sudo make install 之后,如果
- I run
curl -V
,我得到: bash:/usr/bin/curl: No such file or directory
.
- I run
/usr/local/bin/curl -V
,我得到:/usr/local/bin/curl: symbol lookup error: /usr/local/bin/curl: undefined symbol: curl_mime_type
.
我尝试通过将curl/src的路径添加到我的PATH变量来解决这个问题,这使得curl命令可以从我的用户的终端运行。但如果我尝试安装php-curl
,可以理解的是,apache看不到curl并安装了另一个。
关于如何解决这个问题有什么想法吗?
编辑:评论中提到的另一篇文章询问编译后在哪里可以找到可执行文件。这部分已得到解答。但如果不向我的 PATH 变量添加条目,我仍然无法让curl 工作,这似乎不对。这就是我现在想弄清楚的部分。
安装路径
如果你不使用配置--prefix
选项,默认安装将发生在/usr/local
所以卷曲最终在/usr/local/bin/curl
.
符号查找错误
它报告丢失的符号是 libcurl 最近添加的,这表明您正在调用一个新的 curl 工具,该工具加载并使用旧的 libcurl - 即不是您刚刚安装的工具,而是来自先前(系统?)安装的工具。
您可以通过调用来验证您的curl加载了哪个libcurl
$ ldd /usr/local/bin/curl | grep libcurl
您可以通过多种方式之一更改您的curl加载的libcurl,这两种方式都不是特定于curl的,所以我只是简单地提到这里的方法,以便在其他地方进一步解释:
- 刚刚设置
LD_LIBRARY_PATH
在调用curl之前在shell中
- Edit
/etc/ld.so.conf
并确保搜索路径的顺序使新的 libcurl 在旧的 libcurl 之前找到。
- 通过使用类似的命令调用configure,将您的curl可执行文件与新libcurl的硬编码路径链接起来
LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...
更换系统库?
一般是not建议将系统安装的 libcurl 替换为您的自定义版本。主要是因为您可能有一两个应用程序取决于该构建的具体情况。当您从源代码安装自己的 libcurl 时,通常最好将其安装在单独的路径中,以便它可以与系统中已安装的 libcurl 共存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)