【发布时间】: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