卷曲后的路径问题

Eri*_*ich 1 linux ubuntu curl ubuntu-18.04

我使用以下命令在克隆存储库后编译了curl:

./buildconf
./configure --with-libssh2
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

但是,在sudo make install之后,如果

  • 我跑curl -V,我得到:bash下/usr/bin/curl: No such file or directory
  • 我跑步/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不会看到卷曲,而是安装了另一种。

关于如何解决此问题的任何想法?

编辑:评论中提到的另一篇文章是询问编译后在哪里可以找到可执行文件。那部分被回答了。但是,如果不将条目添加到PATH变量中,这似乎是不正确的,但是我仍然无法使curl正常工作。这就是我现在要弄清楚的部分。

Dan*_*erg 7

安装路径

如果不使用configure的--prefix选项,则默认安装为,/usr/local因此curl最终位于/usr/local/bin/curl

符号查询错误

它报告丢失的符号是libcurl的最新添加,表示您正在调用一个新的curl工具,该工具加载并使用了较旧的libcurl-即不是刚刚安装的libcurl,而是以前的(系统?)安装中的一个。

您可以通过调用来验证卷毛加载的libcurl

$ ldd /usr/local/bin/curl | grep libcurl
Run Code Online (Sandbox Code Playgroud)

您可以通过以下几种方式之一来更改您的curl加载的libcurl,这两种方式都不是curl专用的,因此我将在这里简要地介绍一下要在其他地方进一步说明的方法:

  1. 只需LD_LIBRARY_PATH在调用curl之前在shell中进行设置
  2. 编辑/etc/ld.so.conf并确保搜索路径的顺序使新的libcurl在旧的libcurl之前找到。
  3. 通过调用诸如以下的configure命令,将您的curl可执行文件与硬编码路径链接到新的libcurl上 LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...

替换系统库?

通常建议用自定义版本替换系统安装的libcurl。通常是因为您可能有一个或两个依赖于该构建细节的应用程序。从源代码安装自己的libcurl时,通常最好将其安装在单独的路径中,以便它可以与系统中已安装的libcurl共存。