Компиляция с неосновным libc,(например, eglibc,uClibc)

Я работаю во встроенной среде. У меня есть кросс-компилятор для архитектуры 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.6 из eglibc

  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.6 из eglibc

Куда я иду не так? Я действительно застрял в этом. Может кто-нибудь, пожалуйста, пролить свет?

1 ответ

Я думаю, вам нужно перестроить компилятор. Компилятор должен быть настроен иначе, чтобы использовать uClibc.

Другие вопросы по тегам