uclinux — ссылка на библиотеку libc.so.0


person Dima    schedule 18.04.2014    source источник
comment
Вы нашли какое-нибудь решение, у меня такая же проблема?   -  person Arun Gupta    schedule 29.04.2014
comment
@Merom: я скомпилировал набор инструментов с помощью crosstool-NG, и это рабочий файл.   -  person Dima    schedule 30.04.2014
comment
Я сделал то же самое брат, но я потерпел неудачу !!!   -  person Arun Gupta    schedule 01.05.2014


Ответы (3)


Похоже, что набор инструментов, который вы используете, создан для glibc. Но на целевой плате установлена ​​uClibc.
Эти две библиотеки несовместимы.
Во время выполнения они несовместимы, и во время компиляции они несовместимы.
Вы не можете «указать компилятору использовать другой и несовместимый library.
Вам необходимо получить цепочку инструментов, созданную специально для uClibc, а не для glibc/eglibc.

На сайте gnuarm.com раньше были несколько надежных наборов инструментов, но этого сайта больше нет.

Вы можете попробовать создать свою собственную цепочку инструментов, используя crosstool-NG, что намного проще, чем создавать отдельные пакеты цепочек инструментов. . Попробуйте конфигурацию arm-unknown-linux-uclibcgnueabi и настройте ее в соответствии со своими потребностями.

person sawdust    schedule 18.04.2014

У меня была аналогичная проблема при кросс-компиляции простого helloworld из цепочки инструментов openwrt (используя uClibc, целевой IPQ4028) для моего маршрутизатора Gl-iNet-B1300. После успешной компиляции я отправил файл на маршрутизатор, и при попытке выполнить возникла эта ошибка:

    root@GL-B1300:~# ./helloworld
    /root/helloworld: can't load library 'libc.so.0'

Когда я запускаю 'ls -la | grep libc.so.' на /lib/ это появилось:

    libc.so.1 -> libuClibc-1.0.14.so

Так как libc.so.0 там не было, я просто создал ссылку в /lib/

    lib/# ln -s libc.so.1 libc.so.0

Снова работает 'ls -la | grep libc.so.':

    libc.so.0 -> libc.so.1
    libc.so.1 -> libuClibc-1.0.14.so

И затем, выполняя файл:

    root@GL-B1300:~# ./helloworld
    Hell! O' world, why won't my code compile?
    The value of pi is 3.141593

Я предполагаю, что настоящая проблема заключается в том, что набор инструментов, который я использую, не подходит для прошивки маршрутизатора.

person Mauro    schedule 09.04.2018

Вы должны добавить код «загрузить XXX.lib» в свой код, если вы удалите -I. Есть некоторые различия между статической и динамической ссылкой, которые вы можете найти в Google.

person user3544960    schedule 18.04.2014