【发布时间】:2020-05-25 22:11:53
【问题描述】:
我目前正致力于在 x86-64 上运行的 CentOS 7 上构建 Glib 版本 2.45.8,目标是基于 Linux 的自定义发行版,来自在 x86-64 上运行的 Scratch。与版本 3.2.1 的 libffi 链接时出现问题。
path/to/build/directory/bin/ld: warning: libc.so.6, needed by //lib/../libffi.so, not found (try using -rpath or -rpath-link)
path/to/build/directory/lib64/libffi.so: undefined reference to `free@GLIBC_2.2.5'
path/to/build/directory/lib64/libffi.so: undefined reference to `mkostemp@GLIBC_2.7'
(etc ... there are about 15 undefined references total)
path/to/build/directory/lib64/libffi.so: undefined reference to `__getdelim@GLIBC_2.2.5'
path/to/build/directory/lib64/libffi.so: undefined reference to `getenv@GLIBC_2.2.5'
使用 -rpath 或 -rpath-link 将不起作用,因为 libc.so.6 文件在我的构建文件系统中的任何位置都不存在。
但是我在path/to/build/directory/lib64/ 中确实有libc.so 和libc.so.0,在其中找不到libc.so.6。
这是我的 ./configure 和 make 命令。
glib_cv_stack_grows=no \
glib_cv_uscore=no \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes \
LIBFFI_CFLAGS=-lffi \
LIBFFI_LIBS=-lffi \
ZLIB_CFLAGS=-lz \
ZLIB_LIBS=-lz \
PKG_CONFIG_LIBDIR=$TARG/lib/pkgconfig \
./configure --prefix=/ --host=x86_64-linux --with-libiconv
make -j32 LDFLAGS=-liconv
如何获得要构建的正确 libc.so?
【问题讨论】:
-
没有标准C库的Linux系统怎么办?!
-
是的,一秒钟我清除了一些路径以澄清。我的系统本身有 libc.so.6 我将编辑问题
-
@TheArcticWalrus:请编辑您的问题以包括目标操作系统和主机操作系统的名称/版本/架构。
-
CentOS 7 有 libffi-3.0.13 。似乎外星人 libffi-3.2.1 与 CentOS 7 不兼容。.....请注意 glibc :
lib64/libc.so.6是您的操作系统(连同内核)并且无法更改。 -
这似乎是合理的。 Glibc 做的比 libc 实现所需的要多。
标签: c linux gcc gnu-toolchain