编译curl后的路径问题

path issue after compiling curl

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

./buildconf
./configure --with-libssh2
make
sudo make install

然而,在 sudo make install 之后,如果

我尝试通过将 curl/src 的路径添加到我的 PATH 变量来解决这个问题,这使得我的用户可以从终端使用 curl 命令。但是如果我尝试安装 php-curl,apache 可以理解地看不到 curl 并安装一个不同的。

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

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

安装路径

如果您不使用配置的 --prefix 选项,默认安装将在 /usr/local 中进行,因此 curl 最终会在 /usr/local/bin/curl

符号查找错误

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

您可以通过调用

来验证您的 curl 加载了哪个 libcurl
$ ldd /usr/local/bin/curl | grep libcurl

您可以通过多种方式之一更改您的 curl 加载的 libcurl,这两种方式都不是特定于 curl 的,因此我将在此处简要提及这些方法,以便在其他地方进一步解释:

  1. 在调用 curl
  2. 之前,只需在 shell 中设置 LD_LIBRARY_PATH
  3. 编辑 /etc/ld.so.conf 并确保搜索路径的顺序使新的 libcurl 在旧的之前找到。
  4. Link 通过使用 LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...
  5. 之类的东西调用配置,你的 curl 可执行文件具有指向新 libcurl 的硬编码路径

更换系统库?

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