交叉编译的glibc导致构建错误

时间:2013-10-14 14:51:29

标签: linux gcc makefile glibc google-chrome-os

在chroot到Ubuntu(raring)之后,我在Chrome OS上构建了glibc 2.17。 Glibc有--with-headers配置参数,用于提取Chrome操作系统内核头文件。

然后,我使用/usr/local将结果安装到Chrome OS的DESTDIR目录中。我还删除了与已存在的glibc冲突的文件,并将当前的文件符号链接到我的新/usr/local/目录中。它适用于i686内核,但现在我正在运行x86_64(并在其下重建所有内容),这在尝试在Chrome OS上构建openssl时发生:

    libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
    dso_dlfcn.c:(.text+0x11): warning: Using 'dlopen' in statically linked applications  requires at runtime the shared libraries from the glibc version used for linking
    /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../x86_64-unknown-linux-gnu/bin/ld: /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../x86_64-unknown-linux-gnu/lib/../lib64/libdl.a(dlopen.o): relocation R_X86_64_PC32 against undefined symbol `__dlopen' can not be used when making a shared object; recompile with -fPIC
    /usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/../../../../x86_64-unknown-linux-gnu/bin/ld: final link failed: Bad value
    collect2: error: ld returned 1 exit status
    make[4]: *** [link_a.gnu] Error 1

我尝试用-fPIC重建binutils,但仍然没有运气。

1 个答案:

答案 0 :(得分:0)

错误说明需要使用libdl重新编译-fPIC。这是libc的一部分,而不是binutils,至少在XUbuntu 13.04