LINUX.ORG.RU

Не получается собрать MONO под armhf

 , ,


0

1

Всем доброго времени суток.

Кто-нибудь сможет помочь, подсказать, как собрать Mono под armhf под Debian на Freescale imx6dl? Исходники брал как с официального гита, так и из tar-архивов с офсайта mono. Перепробовал ветки 3.8.0, 3.10.0, 3.12.0 – не собирается ни одна (master, говорят, вообще на arm не работает). Собирал по инструкции отсюда и отсюда, прямо на «пациенте» безо всяких виртуалок и qemu-arm-static. Пробовал и через make get_monolite_latest && make EXTERNAL_MCS=”<путь к mcs из monolite>” и через предварительно установленный из репозиториев Mono.

Какие бы ключи, опции, ветки ни пробовал, во всех случаях процесс через ~ 2 часа доходит до успешной сборки компилятора mcs.exe и отваливается при попытке им что-либо откомпилировать (если быть точным, то mscorlib.dll для .net 2.0) без конкретных ошибок.

Такое ощущение, что этот mcs.exe компилируется как-то некорректно. Его не удается вручную заставить работать ни через установленный в системе mono (с ключом --runtime=<…>, с переменной окружения MONO_PATH), ни через mono_wrapper, который используется для вызова этого mcs.exe из make (как я понял mono_wrapper – это урезанная версия mono, собираемая специально для запуска компилятора mcs.exe). Какие опции ему не подавай – он просто никак отвечает на вывод, не реагируя ни на --help, ни на --version, ни даже на «мусор». В то же время mono_wrapper хотя бы реагирует на --help и умеет ругаться на неизвестные опции. Другие утилитки, собранные вместе с mcs.exe и лежащие рядом, запускаются через mono_wrapper нормально, пишут себе что-то на терминал.

Сам же процесс компиляции завершается такими вот нехитрыми строками (это с make V=1):

make[8]: Entering directory `/usr/src/mono-3.8.0/mcs/class/corlib'
MONO_PATH="./../../class/lib/build:$MONO_PATH" /usr/src/mono-3.8.0/runtime/mono-wrapper  ./../../class/lib/build/mcs.exe /codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC  -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0  -debug -optimize  /noconfig -resource:resources/collation.core.bin -resource:resources/collation.tailoring.bin -resource:resources/collation.cjkCHS.bin -resource:resources/collation.cjkCHT.bin -resource:resources/collation.cjkJA.bin -resource:resources/collation.cjkKO.bin -resource:resources/collation.cjkKOlv2.bin --runtime:v2 -target:library -out:../../class/lib/net_2_0/mscorlib.dll  @corlib.dll.sources
make[8]: *** [../../class/lib/net_2_0/mscorlib.dll] Error 1
make[8]: Leaving directory `/usr/src/mono-3.8.0/mcs/class/corlib'
make[7]: *** [do-all] Error 2
<<Leaving directory 7 раз>>
make: *** [all] Error 2


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

В официальных дебиановских/убунтовских репозиториях лежит мало того, что престарая версия 2.XX (10 кажется), так ещё и скомпилированная под armel. В ней DateTime.Now выводит чушь собачью вместо даты, из-за чего невозможно нормальное функционирование ASP.NET (не работают веб-методы и подгрузка ресурсов через WebResource.axd).

Три дня убил. Оказалось, что не разглядел на офсайте MONO, что у них есть собственные репозитории, и там лежат пакеты со свежими сборками.

Тем не менее, всё равно непонятно. Вот у всех всё компилируется в 5 команд (git clone ... ; git submodule init ; git submodule update --recursive ; make && make install), а у меня одного такие непонятные проблемы. Поэтому хоть проблема и решена, всё равно интересно, в чём я неправ.

SVG
() автор топика

Вендузятник должен страдать

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

так ещё и скомпилированная под armel.

В raspbian есть под armhf.

Поэтому хоть проблема и решена, всё равно интересно, в чём я неправ.

Без понятия. Сто раз собирал, еще начиная с самого первого и кривого патча с поддержкой vfp - никаких проблем не было.

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