用非主要libc编译,(例如eglib,uClibc)

时间:2012-03-16 09:54:42

标签: linux gcc arm glibc uclibc

我在嵌入式环境中工作。我有一个ARM架构的交叉编译器,eglibc作为它的主库(即默认的libc随工具链而来)。现在我想要一些应用程序与uClibc链接。所以我用这个工具链编译了uClibc。现在,在尝试使用uClibc编译和链接应用程序时,出现错误。它与工具链的默认库相关联。我认为它可以在同一台机器上有两个不同的libc(例如libc,uClibc)。

我在网上搜索并带有以下

  1. Multiple glibc libraries on a single host

    如其所示,我做了以下

    $arm-unknown-linux-gnueabi-gcc -c test.c -o TEST
    
    $arm-linux-gnueabi-gcc TEST -o dynamic_test_with_new_opts -Wl,rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Wl,-dynamic-linker=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc.so.0 
    

    在这种情况下,它会与libc.so.6

  2. 的默认eglibc相关联
  3. How to link to a different libc file?

    如上所述,我甚至尝试了以下内容:

    $arm-unknown-linux-gnueabi-gcc -Xlinker -rpath=/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib -Xlinker -I/home/user/UCLIBC/uClibc-0.9.32.1/INSTALL-DIR/usr/arm-linux-uclibc/lib/ld-uClibc-0.9.32.1.so test.c -o  dynamic_test_with_linker_options 
    

    在这种情况下,它也会与libc.so.6

  4. 的默认eglibc相关联

    我哪里错了?我真的陷入了困境。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

我认为你需要重建编译器才能做到这一点。需要以不同方式配置编译器以使用uClibc。