【问题标题】:Compiling git for armhf - encountering "libcrypto.so.1.0.0: no version information available (required by git)"为 armhf 编译 git - 遇到“libcrypto.so.1.0.0:没有可用的版本信息(git 需要)”
【发布时间】:2016-07-24 17:04:19
【问题描述】:

我正在尝试让 git 在基于 armhf BuildRoot 的系统上运行。由于 git 不在 BuildRoot 中,我转到我的另一个基于 Debian 的 armhf 系统并从那里用“make prefix=/usr CFLAGS="${CFLAGS} -static-libgcc" (我想要一个静态二进制文件)从源代码编译它。然后我将该二进制文件和 /usr/share/git-core 中的文件存档,并在基于 armhf BuildRoot 的系统上取消存档。

现在当我尝试克隆一个 repo 时。通过 https 在目标系统上出现此错误:

git:/usr/lib/libcrypto.so.1.0.0:没有可用的版本信息(git需要) 克隆到“test_repo”... 致命:找不到“https”的远程助手

我的 armhf 构建系统和目标似乎都有相同版本的 libcrypto.so(即 1.0.0),所以我看不出版本方面的问题。有人有什么建议可以让它工作吗?

【问题讨论】:

  • "...似乎有相同的版本..." 并没有给你很大的信心——当然你首先要尝试的是跑步与您构建的 exact 相同的库(或相反地构建目标文件系统中的确切库)。要么 libcrypto.so 的两个副本之间存在一些显着差异,要么 Git 有问题,但那是两个完全不同的问题。
  • git 将在其配置中静默失败,然后像什么都没发生一样继续前进。回到起点。结帐或解压git。为构建配置git。然后,在配置之后,手动检查 config.log 是否有错误。您可能会发现其中的 3 或 4 个,特别是如果您通过 cURL 启用了 HTTPS。
  • @Notlikethat :主机系统和目标系统都有 libcrypto 的 1.0.0 版本。主机系统是 beaglebone,目标是使用 buildroot 的自定义系统。在将 beaglebone 库复制到目标之前,我想寻找其他问题。
  • ...这是我的观点。它们名义上是相同的版本,但它们实际上是相同的配置吗? “我想尝试通过猜测来诊断问题的原因,然后再尝试一个非常快速且简单的测试,该测试将明确地缩小范围”似乎不是最有效的调试策略。

标签: git openssl arm cross-compiling libcrypto


【解决方案1】:
  1. 如果您想要静态二进制文件,请使用-static 链接器 选项(即LDFLAGS)。
  2. “没有可用的版本信息”在大多数情况下并不是什么大问题,只是您的libcrypto 库没有可用的符号版本信息(如VERDEF ELF 部分)。
  3. 您真正的问题是您的 git 没有应该在 /usr/lib/git-core/ 中某处的 git-remote-https 帮助程序(通常只是指向 git-remote-http 的符号链接)。
  4. 但是 what I see 已经有一个用于 BuildRoot 的 git 包,所以最好的办法就是使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2016-10-14
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多