【问题标题】:GCC links to library that does not existGCC 链接到不存在的库
【发布时间】:2023-01-09 00:09:57
【问题描述】:

两个图书馆一起会产生一个甚至不存在的第三个图书馆吗?

试试here

确保你的机器上有icu和g++

输出

ldd out1:
    linux-vdso.so.1 (0x00007ffd5cdaf000)
    liblcf.so.0 => /home/aleck099/.local/lib/liblcf.so.0 (0x00007ff200600000)
    libicuuc.so.72 => /usr/lib/libicuuc.so.72 (0x00007ff200200000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007ff1ffe00000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007ff200518000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007ff2008a1000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007ff1ffc19000)
    libicui18n.so.71 => not found
    libicuuc.so.71 => not found
    libicudata.so.71 => not found
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007ff200874000)
    libicudata.so.72 => /usr/lib/libicudata.so.72 (0x00007ff1fde00000)
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007ff2008ea000)
ldd out2:
    linux-vdso.so.1 (0x00007ffdfed78000)
    libicui18n.so.72 => /usr/lib/libicui18n.so.72 (0x00007fa088000000)
    libicuuc.so.72 => /usr/lib/libicuuc.so.72 (0x00007fa087c00000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fa087800000)
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fa08834d000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fa087fe0000)
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fa087619000)
    libicudata.so.72 => /usr/lib/libicudata.so.72 (0x00007fa085800000)
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fa08845e000)

可以在out1的ldd输出中看到三个“not found”

它们甚至是现有 icu 库的副本

怎么会这样?

其他信息

  • clang 和 gcc 产生相同的结果
  • liblcf.so 是从easyrpg 构建的

【问题讨论】:

    标签: linux linker icu


    【解决方案1】:

    看起来用于创建 out1 的链接命令从两个不同版本的 ICU 库中提取符号:libicuuc.so.71libicuuc.so.72。 71 vs 72 是版本号。这些似乎是共享库的两个不同版本,它们都在链接器的库路径中。它在 ldd 时间“未找到”,因为一个副本不在运行时共享库​​搜索路径中,即使将两者混合也可能不是一个好主意。

    该解决方案可能会检查您的链接命令并确保 -L 选项仅包含 ICU 库的一个版本/副本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      相关资源
      最近更新 更多