3

我在嵌入式环境中工作。我有一个用于 ARM 架构的交叉编译器,eglibc它是主要库(即libc工具链附带的默认库)。现在我想要一些应用程序链接到uClibc. 所以我uClibc用那个工具链编译。现在在尝试用 编译和链接应用程序时uClibc,出现错误。它与工具链的默认库链接。我认为在同一台机器上可能有两个不同的 libcs​​(例如 libc、uClibc)。

我在网上搜索并附带以下内容

  1. 单个主机上的多个 glibc 库

    正如它所建议的,我做了以下

    $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.6eglibc

  2. 如何链接到不同的 libc 文件?

    正如上面的链接所建议的,我什至尝试了以下方法:

    $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.6eglibc

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

4

1 回答 1

2

我认为,您需要重建编译器才能做到这一点。编译器需要进行不同的配置才能使用 uClibc。

于 2012-03-19T14:09:08.457 回答