编译curl后的路径问题
path issue after compiling curl
我在使用以下命令克隆 repo 后编译了 curl:
./buildconf
./configure --with-libssh2
make
sudo make install
然而,在 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 可以理解地看不到 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 的,因此我将在此处简要提及这些方法,以便在其他地方进一步解释:
- 在调用 curl
之前,只需在 shell 中设置 LD_LIBRARY_PATH
- 编辑
/etc/ld.so.conf
并确保搜索路径的顺序使新的 libcurl 在旧的之前找到。
- Link 通过使用
LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...
之类的东西调用配置,你的 curl 可执行文件具有指向新 libcurl 的硬编码路径
更换系统库?
通常不建议将系统安装的 libcurl 替换为您的自定义构建。主要是因为您可能有一个或两个应用程序依赖于该构建的细节。当您从源代码安装自己的 libcurl 时,通常最好将其安装在单独的路径中,以便它可以与系统中已安装的 libcurl 共存。
我在使用以下命令克隆 repo 后编译了 curl:
./buildconf
./configure --with-libssh2
make
sudo make install
然而,在 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 可以理解地看不到 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 的,因此我将在此处简要提及这些方法,以便在其他地方进一步解释:
- 在调用 curl 之前,只需在 shell 中设置
- 编辑
/etc/ld.so.conf
并确保搜索路径的顺序使新的 libcurl 在旧的之前找到。 - Link 通过使用
LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...
之类的东西调用配置,你的 curl 可执行文件具有指向新 libcurl 的硬编码路径
LD_LIBRARY_PATH
更换系统库?
通常不建议将系统安装的 libcurl 替换为您的自定义构建。主要是因为您可能有一个或两个应用程序依赖于该构建的细节。当您从源代码安装自己的 libcurl 时,通常最好将其安装在单独的路径中,以便它可以与系统中已安装的 libcurl 共存。