Аккумуляторы OCaml, входящие в комплект, не могут быть встроены в Mac OS X 10.6.6 - PullRequest
1 голос
/ 24 февраля 2011

Я пытался собрать батареи OCaml, включая 1.3.0, на моем Mac OS X 10.6.6 (MacBook Air3,2), но не смог. Сам OCaml и денонпендируемые библиотеки имеют следующие версии:

  • OCaml: 3.11.2
  • findlib: 1.2.6
  • Единица: 1.1.0
  • ромашка: 0.8.1
  • Марка: 3,81

Я не использую GODI для установки. Есть ли кто-нибудь, кто использует батареи OCaml, включенные в ваш Mac, и если есть, можете ли вы сообщить мне версии ваших библиотек? Более того, не могли бы вы найти решение для исправления этой ошибки?

% make all
cp -f src/batCamomile-0.8.1.ml src/batCamomile.ml
test ! -e src/batteries_config.ml || rm src/batteries_config.ml
ocamlbuild syntax.otarget byte.otarget src/batteries_help.cmo META shared.otarget
Finished, 0 targets (0 cached) in 00:00:00.
+ ocamlfind ocamlopt -shared -linkall -package camomile,num,str -o src/batteries_uni.cmxs src/batteries_uni.cmxa
ld: warning: -read_only_relocs cannot be used with x86_64
ld: codegen problem, can't use rel32 to external symbol _caml_negf_mask in .L101 from src/batteries_uni.a(batFloat.o)
collect2: ld returned 1 exit status
File "caml_startup", line 1, characters 0-1:
Error: Error during linking
Command exited with code 2.
Compilation unsuccessful after building 479 targets (478 cached) in 00:00:01.
make: *** [all] Error 10

Спасибо, Yoshi a.k.a. ymotongpoo

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Я сообщил об ошибке, и причиной сбоя make test qtest является -n опция команды echo. https://github.com/ocaml-batteries-team/batteries-included/issues#issue/122

Сначала в OS X должна быть установлена ​​опция BATTERIES_NATIVE_SHLIB=false. И все же, вам нужно изменить Makefile для успешного запуска теста. Последняя версия в хранилище была исправлена, но если вы хотите собрать tarball 1.3.0, измените Makefile следующим образом:

#put all the testing modules in a library
qtest/test_mods.mllib: $(TESTABLE)
-  echo -n "Quickcheck Tests \c" > $@
+  echo "Quickcheck Tests \c" > $@
   echo $(patsubst src/%.ml,%_t, $(TESTABLE)) >> $@

или, вы можете использовать /bin/echo

#put all the testing modules in a library
qtest/test_mods.mllib: $(TESTABLE)
-  echo -n "Quickcheck Tests \c" > $@
+  /bin/echo -n "Quickcheck Tests \c" > $@
   echo $(patsubst src/%.ml,%_t, $(TESTABLE)) >> $@

Работает в обе стороны.

1 голос
/ 26 февраля 2011

В Mac OS вы должны отключить сборку собственной общей библиотеки.Чтобы сделать это, используйте аргумент BATTERIES_NATIVE_SHLIB=no, чтобы сделать: Вам необходимо установить этот параметр при каждом вызове make (или установить его как переменную среды).

Наконец, я настоятельно рекомендую использовать GODI.Это делает управление установкой OCaml намного проще, чем ручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...