【问题标题】:Error trying to install glibc in WSL: relocation R_X86_64_PC32 against undefined symbol `__GI___open64_nocancel'尝试在 WSL 中安装 glibc 时出错:针对未定义符号 `__GI___open64_nocancel' 重新定位 R_X86_64_PC32
【发布时间】:2019-03-26 11:19:04
【问题描述】:

当我尝试将最新的 glibc 安装到我的机器中时,如果我执行了带有标志的“config”可执行文件:../configure CFLAGS="-O3 -fPIC" --disable-sanity-checks,它会正确生成 makefile,尽管我认为 disable-sanity-checks 会给出一些错误。

但每当我尝试使用 make 执行生成的 Makefile 时,控制台都会打印以下错误:

make[3]: Leaving directory '/mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/elf'
gcc   -nostdlib -nostartfiles -shared -o /mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/glibc-build/elf/ld.so.new                                                                                                \
          -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -Wl,-z,defs       \
          /mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/glibc-build/elf/librtld.os -Wl,--version-script=/mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/glibc-build/ld.map
\
          -Wl,-soname=ld-linux-x86-64.so.2                      \
          -Wl,-defsym=_begin=0
/mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/glibc-build/elf/librtld.os: In function `process_envvars':
/mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/elf/rtld.c:2686: undefined reference to `__GI___open64_nocancel'
/usr/bin/ld: /mnt/c/Users/SCP173/Downloads/Thread/glib/glibc/glibc-build/elf/librtld.os: relocation R_X86_64_PC32 against undefined symbol `__GI___open64_nocancel' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

正如我所说,我尝试添加 -fPIC 标志但仍然没有抓住它。我对.os.map 和诸如此类的其他扩展有点陌生。我做错了吗?否则,我怎么能只使用 gcc 编译该文件,而不是将标志传递给整个 make 命令?

【问题讨论】:

    标签: c gcc gnu-make glibc windows-subsystem-for-linux


    【解决方案1】:

    您的文件系统设置不正确。默认情况下,NTFS 保留大小写,但不区分大小写。据我了解,当前版本的 WSL 仅将文件系统树的一部分设置为区分大小写的模式。 (现在忽略以前的系统范围配置。)

    Building glibc requires a case-sensitive file system. 另请注意,WSL 不是 glibc 的合适开发环境,因为由于 WSL 内核仿真中的错误导致测试失败太多。

    【讨论】:

      猜你喜欢
      • 2016-06-30
      • 2019-01-02
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2020-01-17
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多