我使用以下命令克隆了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并安装另一个。
关于如何解决此问题的任何想法?
编辑:评论中提到的另一篇文章是在编译后询问在哪里找到可执行文件。那部分得到了解答。但是如果没有在我的PATH变量中添加一个条目,我仍然无法使curl工作,这似乎不对。这就是我现在要弄清楚的部分。
答案 0 :(得分:6)
如果不使用configure的--prefix
选项,则默认安装将在/usr/local
中进行,因此curl最终将在/usr/local/bin/curl
处出现。
它报告丢失的符号是libcurl的最新添加,它表示您正在调用一个新的curl工具,该工具加载并使用了较旧的libcurl-即,不是刚刚安装的libcurl,而是先前版本的(系统?)安装。
您可以通过调用来验证卷毛加载的libcurl
$ ldd /usr/local/bin/curl | grep libcurl
您可以通过以下几种方式之一来更改您的curl加载的libcurl,这两种方式都不是curl特有的,因此,我将在这里简要介绍一下要在其他地方进一步说明的方法:
LD_LIBRARY_PATH
/etc/ld.so.conf
并确保搜索路径的顺序使新的libcurl在旧的libcurl之前找到。LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure ...
之类的configure,将curl可执行文件与硬编码路径链接到新的libcurl 通常建议不要 用您的自定义版本替换系统安装的libcurl。通常是因为您可能有一个或两个依赖于该构建细节的应用程序。从源代码安装自己的libcurl时,通常最好将其安装在单独的路径中,以便它可以与系统中已安装的libcurl共存。