Ответ 1
Вопрос ответил сам... довольно странным образом. То, что он действительно запрашивал (в 2012 году), было таргетинг кросс-компилятора (неуказанная версия) iOS для версии 4.x Ocaml. И дамп кода в этом вопросе пытался использовать команды кросс-компиляции Джеффри Скофилда и script (ocamlxarm/3.1) для Ocaml 3.1.x, что не совсем сработало для Ocaml 4.0. Но веб-страница Скофилда, с которой связались вопросы, была обновлена тем временем (последняя в декабре 2014 г.), чтобы фактически предоставить решение для Ocaml 4.0 (в настоящее время ocaml-4.01.0 + xarm-4.0.2-v7), тем самым задавая вопрос, заданный здесь ( "есть способ сделать эту работу" ) спорным или довольно тривиальным. Или:
- Загрузите предварительно созданный ocaml-4.01.0+xarm-4.0.2-v7.dmg пакет, который в настоящее время предоставляется на этой веб-странице. Обязательно прочтите инструкцию по использованию и упростите свою жизнь, используя свою кросс-компиляционную оболочку script, которая позволяет переключаться между iOS 7 и 8 целями. Или, если вам как-то все еще нужно построить кросс-компилятор Ocaml из источников...
- Следуйте инструкциям в разделе "Приложение: Строительство из источников" на странице (для него, похоже, нет якоря HTML). К сожалению, эти инструкции содержат двенадцать абзацев (9 Кбайт текста), поэтому я не собираюсь их копировать. Они включают ссылку на необходимые исправления для кросс-компиляции OCaml 4.0.1 в iOS. Надеемся, что на этой веб-странице написаны именно те шаги, которые были использованы для создания вышеупомянутого ocaml-4.01.0 + xarm-4.0.2-v7.dmg. Однако, поскольку в этом пакете dmg нет Apple-эквивалента RedHat-стиля SRPM (возможно, у Apple есть эквивалентная технология?), Это невозможно полностью убедитесь, что этапы, используемые для создания вышеупомянутого dmg, полностью воспроизводятся на этой веб-странице. Я не пробовал себя следовать этим шагам, чтобы убедиться, что они работают.
Но, тем не менее, я думаю, что вопрос, заданный здесь, в основном разрешен в общем смысле "есть ли способ сделать эту работу", загрузив предварительно созданные версии 4.0.1 из веб-страницы Scofield..., связанные прямо в вопрос. Проблемы с Scofield ocamlxarm build system version 3.1, неспособные перекрестно компилировать Ocaml 4.0, должны быть пресловутым материалом, на который никто не заботится. Если есть проблемы с инструкциями Scofield или исправлениями для 4.0, которые не работают, их следует спросить отдельно, я думаю, потому что ошибки nitty gritty из вопроса здесь кажутся неуместными для этого сценария.
(И если вышеизложенное кажется чересчур педантичным, в основном по просьбе модов я расширил свой ответ до его текущего состояния.)
Хотя OP, вероятно, не заботится о том, что я собираюсь сказать в этом параграфе, учитывая, насколько общий его заголовок вопроса, я также укажу, что существует довольно недавний проект, поддерживающий таргетинг кросс-компилятора OCaml Android, называемый opam-android. И у этого есть все его биты здания как скрипты в репозитории git, так что может быть легче украсть-как-это-сделано. Сравнивая патчи этих двух кросс-компиляторов, не так много можно сказать в общем, как заставить OCaml работать в качестве кросс-компилятора, кроме: вам нужно взломать его для конкретной целевой платформы. Одна вещь, которую я скажу, это то, что патч Scofield iOS намного более инвазивный (и намного дольше), чем патчи для Android. Многие исправления Scofield связаны с генерацией кода регистра. Я не знаю достаточно о внутренних компонентах iOS, чтобы сказать, почему эти изменения были необходимы для iOS, но не для Android, даже в основном они используют одно и то же семейство процессоров ARM. Возможно, кто-то должен спросить об этом как о действительно интересном/нетривиальном вопросе, который, вероятно, с радостью ответит на вопрос Джеффри Скофилда.