Question

J'ai posé cette question avant , mais il se trouve que ce que je croyais être le solution n'est pas.

Le problème

Je viens de commencer une nouvelle installation GODI et je tente d'installer la bibliothèque . J'ai toutes les dépendances triées, par exemple Camomille. Je reçois l'erreur suivante:

> ocamlfind ocamlopt -a -package camomile,num,str src/batCamomile.cmx src/batConcurrent.cmx src/batInnerWeaktbl.cmx src/batInnerIO.cmx src/batInterfaces.cmx src/batMonad.cmx src/batRef.cmx src/batValue_printer.cmx src/batEnum.cmx src/batPrintf.cmx src/batList.cmx src/batRefList.cmx src/batArg.cmx src/batBitSet.cmx src/batChar.cmx src/batReturn.cmx src/batString.cmx src/batUChar.cmx src/batUTF8.cmx src/batRope.cmx src/batUnix.cmx src/batIO.cmx src/batArray.cmx src/batBigarray.cmx src/batNumber.cmx src/batBig_int.cmx src/batStd.cmx src/batBool.cmx src/batBuffer.cmx src/batInt.cmx src/batMap.cmx src/batOption.cmx src/batPMap.cmx src/batLazyList.cmx src/batParserCo.cmx src/batVect.cmx src/batCharParser.cmx src/batFloat.cmx src/batStream.cmx src/batGenlex.cmx src/batComplex.cmx src/batDigest.cmx src/batFormat.cmx src/batGc.cmx src/batHashtbl.cmx src/batInt32.cmx src/batInt64.cmx src/batLexing.cmx src/batMarshal.cmx src/batNativeint.cmx src/batNum.cmx src/batOo.cmx src/batFile.cmx src/batPrint.cmx src/batPrintexc.cmx src/batPervasives.cmx src/batQueue.cmx src/batRandom.cmx src/batScanf.cmx src/batSet.cmx src/batStack.cmx src/batStr.cmx src/batSys.cmx src/batUnit.cmx src/batBase64.cmx src/batCharEncodings.cmx src/batDllist.cmx src/batDynArray.cmx src/batGlobal.cmx src/batSubstring.cmx src/batLogger.cmx src/batPSet.cmx src/batMultiPMap.cmx src/batOptParse.cmx src/batPair.cmx src/batUCharParser.cmx src/batPathGen.cmx src/batResult.cmx src/batSeq.cmx src/batAvlTree.cmx src/batISet.cmx src/batIMap.cmx src/batteries_config.cmx src/batteries_print.cmx src/batteries_uni.cmx src/batMutex.cmx src/batRMutex.cmx src/batteries.cmx -o src/batteries.cmxa
> ocamlfind ocamlopt -shared -linkall -package camomile,num,str -o src/batteries_uni.cmxs src/batteries_uni.cmxa
> + 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.
> make[7]: *** [all] Error 10
> Error: Exec error: File /Users/surikator/godi/build/godi/godi-batteries/./../../mk/bsd.pkg.mk, line 1039: Command returned with non-zero exit code
> Error: Exec error: File /Users/surikator/godi/build/godi/godi-batteries/./../../mk/bsd.pkg.mk, line 1378: Command returned with non-zero exit code

### Error: Command fails with code 1: godi_console

La solution qui ne fonctionne pas

Dans ma précédente question, sur la base ce poste , je basculée le réglage GODI

GODI_BATTERIES_SHLIB = no

et il a fait des piles de terminer l'installation. Mais je viens de commencer une nouvelle installation de GODI et même avec ce paramètre, je reçois toujours l'erreur ci-dessus (ce qui est le même que j'avais à l'origine).

Mes paramètres

J'utilise Mac OS X version 10.6.4 sur un MacBookPro (64 bits) avec la version la plus récente de GODI (RocketboostMC-20091222).

Idées?

De

> ld: warning: -read_only_relocs cannot be used with x86_64

il semble vraiment que les batteries / Godi tente de faire quelque chose pour 32 bits quand il devrait faire quelque chose pour 64. Est-il un paramètre dans des batteries ou Godi où cela peut être changé?

De

> ld: codegen problem, can't use rel32 to external symbol _caml_negf_mask in .L101 from src/batteries_uni.a(batFloat.o)

on peut voir que la source du problème est la bibliothèque batteries_uni.a. Je ne sais pas s'il y a quelque chose d'imposant 32 bits là-dedans? J'ai remarqué que batteries_uni.ml comprend des modules Int32 et Int64 pour les entiers, mais cela ne devrait pas vraiment être un problème, devrait-il?

Toutes les idées?

Toute aide sur ce serait formidable!

Merci beaucoup, Surikator.

Était-ce utile?

La solution

Je l'ai fait une enquête, et il se trouve qu'il y avait un bogue dans le script d'emballage GODI de telle sorte que l'option GODI_BATTERIES_SHILB était un no-op. J'ai corrigé ce bug et publié des scripts de compilation mises à jour, afin mise à no et la construction de batteries après la mise à jour de votre installation GODI (godi_update, ou « Vérifier les nouveaux paquets sources » dans godi_console) devrait empêcher avec succès les fichiers .cmxs d'être construit et installé. Je pense que cela vous permettra de construire sur le Mac maintenant.

Je voudrais trouver le bug de construction réelle et obtenir des fichiers .cmxs travaillant sur Mac, mais aucun des batteries devs ont Mac (à ma connaissance) il est donc un peu difficile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top