使用不同的 glibc 版本制作 curl:未解决 GLIBC_PRIVATE

make curl with different glibc version: unresolved GLIBC_PRIVATE

分发glibc版本是2.11.3。我把2.22版本编译成了/usr/glibc/.

运行 make 对于新的 curl 版本 7.46 我收到此错误:

/usr/glibc/lib/libpthread.so.0: undefined reference to `__mktemp@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__tfind@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__tdelete@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__twalk@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__call_tls_dtors@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__madvise@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `memcpy@GLIBC_2.14'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__getrlimit@GLIBC_PRIVATE'
/usr/glibc/lib/libresolv.so.2: undefined reference to `__sendmmsg@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__ctype_init@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__h_errno@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__tsearch@GLIBC_PRIVATE'
/usr/glibc/lib/libpthread.so.0: undefined reference to `__libc_vfork@GLIBC_PRIVATE'

我确信这一定是新 glibc 版本的问题,但我的 linux 知识太薄弱,无法提供新 glibc 版本的正确路径。

我做错了什么?谢谢!

有几个问题:

  1. glibc 2.22 - 分发版本为 2.11.3
  2. openssl 1.0.2f - 分发版本是 0.9.8j [从 2009 年开始!]
  3. curl 7.46.0 - 分发版本为 7.19.7
  4. libmemcached 具有来自分发
  5. 的活动 sasl 版本

我在我的 CUDA 项目中使用了所有这些库,由于我想将所有这些库更新到最新版本,这些步骤是:

  1. glibc:构建到 /usr/glibc
  2. openssl:构建成/usr/glibc/openssl-curl/。在 运行 export $LDFLAGS=-L/usr/glibc/lib
  3. 之前
  4. curl: 运行 ./configure --prefix=/usr/glibc/openssl-curl/ --with-ssl=/usr/glibc/openssl-curl/ --disable-ldap - 非常重要: $LDFLAGS 必须在运行ning时为空configure 因为脚本将值添加到 $LD_LIBRARY_PATH 并且由于新的 glibc 和分发版本的版本不匹配所有程序都崩溃 segmentation fault。之前make又运行export $LDFLAGS=-L/usr/glibc/lib.
  5. 对于我的项目,我还必须使用以下命令使用新的 glibc 版本重建 libmemcached./configure --prefix=/usr/local/libmemcached --disable-sasl

在 CUDA 中,我必须设置新库的路径,现在一切正常。为了加载新的 glibc 版本,设置链接器选项 -Wl,--rpath=/usr/glibc/lib-Wl,--dynamic-linker=/usr/glibc/lib/ld-linux-x86-64.so.2 也很重要。

对于我的 linux 系统,我 不能 添加 /etc/ld.so.conf 路径 /usr/glibc/lib 否则整个系统会崩溃。