Nano Hash - криптовалюты, майнинг, программирование

Файл cma не является объектным файлом байт-кода => Что это значит?

Я пытаюсь установить привязки ocaml-sqlite3, чтобы получить доступ к базе данных sqlite из программы o'caml.

Настройка и сборка проходят гладко, но установка не удалась. Потому что файл sqlite3.cma не является объектным файлом байт-кода (см. ниже).

    ~/Software/ocaml-sqlite3-release-1.5.6> sudo make install

[ -f *.so ] && SO_FILES=*.so; \
        ocamlfind install sqlite3 META sqlite3.cmi sqlite3.mli sqlite3.cma *.cmxa *.a *.cmx $SO_FILES
Installed /usr/lib64/ocaml/site-lib/sqlite3/dllsqlite3_stubs.so
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.cmx
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.a
Installed /usr/lib64/ocaml/site-lib/sqlite3/libsqlite3_stubs.a
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.cmxa
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.cma
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.mli
Installed /usr/lib64/ocaml/site-lib/sqlite3/sqlite3.cmi
Installed /usr/lib64/ocaml/site-lib/sqlite3/META
Updated /usr/lib64/ocaml/ld.conf
ocamlfind ocamlmktop -o sqlite3top -package "sqlite3" sqlite3.cma
The file sqlite3.cma is not a bytecode object file
make: *** [install] Error 2

Какова общая причина этого, и сталкивались ли вы с этим для этой конкретной библиотеки? Я запускаю ocaml v 3.11.1, скомпилированный из исходников.

EDIT: кажется, что файл предоставлен ocamlfind, возможно, проблема связана с тем, что я использую среду 64?

21.09.2009

  • Я видел такую ​​​​ошибку раньше, но, к сожалению, я не помню, что ее вызвало. 22.09.2009

Ответы:


1

Итак, похоже, проблема исходила из разных сторон:

Во-первых, компилятор ocaml, используемый ocamlfind, был неправильным. Я понял это, просмотрев файл /usr/local/etc/findlib.conf. ocamlc указывал на ocamlopt.opt, и это была версия 3.10.

Затем мне пришлось перекомпилировать findlib. Но возникла проблема, т.к. я на 64 архитектуре и некоторые элементы не были найдены, поэтому пришлось перенастраивать findlib модифицируя в основном -bindir и -sitelib.

Я также перекомпилировал систему ocaml с параметром -cc "gcc -m64", но я не уверен, что это имеет какой-либо эффект.

Теперь это работает, но я должен использовать -I, чтобы добавить каталог sqlite3.cma (/usr/lib64/ocaml/site-lib/sqlite3).

Не уверен, что это может кому-то помочь :-).

22.09.2009

2

Обычно эта ошибка появляется, когда компилятор ocaml пытается использовать бинарные файлы (cma,cmo и т. д.), созданные другой версией ocaml. В частности, это означает, что вам нужно перекомпилировать все библиотеки при обновлении ocaml (даже с незначительным изменением версии, например, 3.11.0 -> 3.11.1).

Может ли быть так, что ocamlfind запускал разные установки ocaml на этапах make и make install?

23.09.2009
  • да, вы правы, это то, что я написал в своем ответе, /usr/local/etc/findlib.conf использовал ocamlopt.opt, который указывал на более старую версию ocaml. 23.09.2009
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..