我正在尝试安装 ocaml-sqlite3 绑定,以从 o'caml 程序访问 sqlite 数据库。
配置和make都很顺利,但是安装失败。因为文件 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 环境?
所以看来问题来自不同的方向:
首先,ocamlfind 使用的 ocaml 编译器不正确。我通过查看 /usr/local/etc/findlib.conf 发现了这一点。 ocamlc 指向 ocamlopt.opt,版本为 3.10。
然后,我不得不重新编译findlib。但是出现了一个问题,因为我在 64 架构上并且找不到一些元素,所以我不得不重新配置 findlib 主要修改 -bindir 和 -sitelib 。
我还使用 -cc "gcc -m64" 重新编译了 ocaml 系统,但我不确定它是否有任何效果。
现在,它可以工作,但我必须使用 -I 添加 sqlite3.cma 的目录(/usr/lib64/ocaml/site-lib/sqlite3)。
但不确定这可以帮助任何人:-)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)