编译32位GLIBC - 缺少对象是循环引用

时间:2013-10-28 17:15:13

标签: gcc

在CentOS 6.4 64位系统上我试图构建一个32位版本的GLIBC(2.18)。使用yum我在/ lib中安装了32位版本的GCC库。我为我的构建使用名为GLIBC32的目录。经过试验和研究,我决定采用以下方案:

- prefix = / usr / local / lib32 --exec-prefix = / usr / local / bin32 --build = i686-pc-linux-gnu CC =“gcc -m32”CXX =“gxx -m32”

很多构建都是成功的,除了看起来SUNRPC组件需要对象(crt1.o)和构建创建的库。如果我有GLIBC库对象,SUNRPC希望我不需要构建库!!!!

* 如果我停止并将crt1.o复制到/ lib中,那么构建会抱怨libc.so.任何建议都得到了回应。致谢 *

gcc -m32 /home/oracle/tmp/glibc32/sunrpc/cross-rpc_main.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_hout.o / home / oracle / tmp / glibc32 / sunrpc / cross -rpc_cout.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_parse.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_scan.o / home / oracle / tmp / glibc32 / sunrpc / cross-rpc_util .o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_svcout.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_clntout.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_tblout.o /home/oracle/tmp/glibc32/sunrpc/cross-rpc_sample.o -o / home / oracle / tmp / glibc32 / sunrpc / cross-rpcgen
/ usr / bin / ld:crt1.o:没有这样的文件:没有这样的文件或目录 collect2:ld返回1退出状态 make [2]: * [/ home / oracle / tmp / glibc32 / sunrpc / cross-rpcgen]错误1 make [2]:离开目录/home/oracle/tmp/glibc-2.18/sunrpc' make[1]: *** [sunrpc/others] Error 2 make[1]: Leaving directory / home / oracle / tmp / glibc-2.18' make:* [all]错误2

以下是/ lib

的内容

[oracle @ qawebtech glibc32] $ ls -l / lib
总计156
drwxr-XR-X。 3 root root 4096 Oct 18 19:53 alsa
lrwxrwxrwx。 1 root root 14 Oct 18 19:53 cpp - > ../usr/bin/cpp
drwxr-XR-X。 3 root root 4096 Oct 18 19:57 crda
drwxr-XR-X。 43 root root 4096 Oct 18 20:21固件
drwxr-XR-X。 6 root root 4096 Oct 18 19:56 kbd
-rwxr-XR-X。 1 root root 120672 2013年2月21日libgcc_s-4.4.7-20120601.so.1
lrwxrwxrwx。 1 root root 28 Oct 26 00:39 libgcc_s.so.1 - > libgcc_s-4.4.7-20120601.so.1
drwxr-XR-X。 2 root root 4096 Oct 18 19:57 lsb
DR-XR-XR-X。 4 root root 4096 Oct 18 20:20模块
drwxr-XR-X。 2 root root 4096 2013年2月21日安全
drwxr-XR-X。 6 root root 4096 Oct 18 19:52 terminfo
drwxr-XR-X。 5 root root 4096 Oct 26 03:49 udev

1 个答案:

答案 0 :(得分:0)

获得Centos 6.4的32位库还有另一种不那么痛苦的方法。您可以从Centos存储库(http://mirror.centos.org)下载i386 RPM。然后使用rpm将它们安装到新的根目录中。获得库文件后,将它们移动到/ lib,您的32位应用程序将能够找到它们。您可能必须手动修复某些链接。有关将RPM下载到新根目录的详细信息,请参阅此链接。

How to build a chroot jail for Centos

除非您进行交叉编译,否则GLIBC并未真正设置为在现有系统上构建。