LINUX.ORG.RU

Я так понимаю, что у тебя Debian 8, судя по версии ядра.

Смотришь https://packages.debian.org/stable/devel/gcc-mips-linux-gnu и видишь, что там только с 9 версии.

Можно попробовать долго и нудно пересобирать пакеты. Можно запихнуть debian 9 в контейнер и юзать оттуда, можно тупо обновить систему до 9-й версии.

Radjah ★★★★★ ()
Ответ на: комментарий от Radjah

да... у меня какая-то не свежая ос, типа Debian 8.

можно тупо обновить систему до 9-й версии - это самое простое, спасибо.

ps могу заного накатить 9-ку. а можно без переустановки без сложного танца с бубном обновить до 9-ки?

juvf ()
Ответ на: комментарий от Radjah

pps и видишь, что там только с 9 версии я видел эту страничку. а где там сказано что с 9-ой, не могу найти?

juvf ()
Ответ на: комментарий от Radjah

накатил mips-linux-gnu- собрал холоворд, без дополнительных ключей

22:09:28 **** Incremental Build of configuration Debug for project test **** make all Building file: ../src/test.cpp Invoking: Cross G++ Compiler mips-linux-gnu-g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/test.d" -MT"src/test.o" -o «src/test.o» "../src/test.cpp" Finished building: ../src/test.cpp Building target: test Invoking: Cross G++ Linker mips-linux-gnu-g++ -o «test» ./src/test.o Finished building target: test

Перетащил на роутер, запускаю - получил

-ash ./test: not found

Почему? Всетаки из коробки кросскомпилятор - это насрано? Надо свой тулчейн собирать? Или при компиляции мне нужно какойнить ключ добавить?

juvf ()
Ответ на: комментарий от juvf

Скорее всего, на роутере uclibc, или glibc, но другой версии, чем в твоем тулчейне. Посмотри какой interpreter записан в твоем бинарнике (readelf -l) и сравни с тем что есть на девайсе

annulen ★★★★★ ()
Ответ на: комментарий от annulen

chmod был 775, потом даже 777 сделал - не помогает.

на роутере нет readelf. opkg не знает про readelf

juvf ()
Ответ на: комментарий от juvf

Ты слепой? Сделай +x. Не 775, не 777, а +x.

anonymous ()
Ответ на: комментарий от juvf

на десктопе запустил readelf, на картинке вывод. Как понять что те или не те библиотеки? И как в соответствие приевисти всё?

https://yadi.sk/i/Ze1ZikCz3RZ2Rs

juvf ()
Ответ на: комментарий от anonymous

анонимус - уди учи уроки. у файла права 777. Что изменит команда «chmod +x test»? Ничего!!! Добавит ему атрибут «исполняемый». Он и так исполняемый.

juvf ()
Ответ на: комментарий от juvf

-ash ./test: not found

Статическая компоновка (флаг -static), решит эту проблему, но в debian стандартная библиотека собрана с -mhard-float, и запуск этого кода на маршрутизаторе завершится, скорее всего, с исключением «Illegal instruction».

Также надо учитывать порядок байт процессора и использовать соответствующий mips- или mipsel- вариант компилятора.

No ()
Ответ на: комментарий от juvf

Твой бинарник хочет запускаться с помощью /lib/ld.so.1, если на девайсе этого файла нет, то это именно то, что «not found».

Только не надо сразу бросаться копировать что-то в /lib, если используются разные libc то есть два подхода

1) скопировать свою программу в отдельный каталог со всеми зависимостями, и притаратанить туда ей libc из тулчейна. Interpreter в бинарнике поменять с помощью patchelf на путь к своему ld.so.1 в этом каталоге

2) пересобрать тулчейном, идентичным натуральному

annulen ★★★★★ ()
Ответ на: комментарий от No

А также тип архитектуры, бинарник для mips32r2 на mips32 не заведется, например

annulen ★★★★★ ()
Ответ на: комментарий от annulen

/lib/ld.so.1 - это библиотека линковщика времени выполнения.

iZEN ★★★★★ ()
Ответ на: комментарий от juvf

На *nix флаг -static не роляет. Полноценные автономные выполнемые файлы (*.exe, *.dll) могут быть разве что на DOS и Windows.

iZEN ★★★★★ ()
Ответ на: комментарий от annulen

проще конечно 1), но это для холоворда.

Потом нужно будет прогру собрать, которую уже отладил на распбери. Там нужен myqsl. На роутере opkq list показал, что нет готового пакета для mysql. Придется и его из исходников кросскомпилировать. А там может ещё больше всяких зависимостей. Всё таки нужно свой тулчейн собирать.

Процессор на роутере Atherons ar9330, написано что архитектура MIPS 24k. 1) mips-linux-ghu- это я правильный кросскомпилятор выбрал?

2) Есть может где или у кого-нить собранный тулчейн для Atherons ar9330?

3) при сборке своего gcc сталкнулся с проблемой - нужно определить архитектуру.... не могу найти правильный ключ для архитектуры MIPS 24k

juvf ()
Ответ на: комментарий от iZEN

Это не библиотека, это интерпретатор ELF. В лялихе является компонентом libc

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.