2

ctypesとを使用する最近のアプリケーションをコンパイルしようとしていますがsqlexpr、シンボルが解決されないという問題があります。OPAM から ctypes と sqlexpr をビルドし、libffibrew のバージョンを更新しましたが、正しいライブラリ リンケージを取得できない理由がわかりません。推測してみたい人はいますか?(私はすでにこれに対する私の典型的な修正を試みました。これは に渡すことですCFLAGS="-arch i386"

Undefined symbols for architecture x86_64:
  "_ffi_closure_alloc", referenced from:
      _ctypes_make_function_pointer in libctypes-foreign-base_stubs.a(ffi_call_stubs.o)
  "_ffi_prep_closure_loc", referenced from:
      _ctypes_make_function_pointer in libctypes-foreign-base_stubs.a(ffi_call_stubs.o)
  "_sqlite3_enable_load_extension", referenced from:
      _caml_sqlite3_enable_load_extension in libsqlite3_stubs.a(sqlite3_stubs.o)
     (maybe you meant: _caml_sqlite3_enable_load_extension)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
File "_none_", line 1:
Error: Error while building custom runtime system
Command exited with code 2.
Compilation unsuccessful after building 41 targets (40 cached) in 00:00:00.
make: *** [all] Error 10
4

2 に答える 2

1

https://github.com/ocaml/opam-repository/issues/398から、これは Mac OS X 10.7.5 の sqlite に問題があるようです。

「パッケージが指定されている順序を切り替えると、問題が解決します」

于 2014-03-28T16:22:30.383 に答える
0

これに答えるために、私は Thomas Leonard のソリューションをlibffi採用し、Mac に の新しいバージョンをインストールする必要がありました。brew でリンクを強制する必要があり、 inlibffiのバージョンを削除し、brew のセラーにある私のバージョンを参照しました。これらを実行した後、OCamlBuild パッケージの順序を切り替えるとともに、問題なく動作しました。libffi/usr/lib/libffi.dylib

于 2014-03-28T17:28:46.377 に答える