2 Stimmen

Warum lässt sich Googles Cityhash-Edelstein nicht installieren?

Ich versuche, Ruby's FFI zu verwenden, um die Google-Cityhash-Gem anhängen; Es ist ein 64-Bit und 128-Bit, nicht kryptografische Hash, ähnlich wie die Standard-Ruby-Hash-Funktion (murmur_hash 1), aber ist ein bisschen neuer, und, was noch wichtiger ist, ermöglicht die Einstellung der Seed auf den Hash.

Ich habe cityhash in /usr/local/lib unter Verwendung der Standard ./configure auf meinem Mac. Dadurch werden einige Bibliotheken in /usr/local/lib :

-rwxr-xr-x 1 root wheel 13720 Jul 11 15:16 /usr/local/lib/libcityhash.0.dylib
-rw-r--r-- 1 root wheel 43424 Jul 11 15:16 /usr/local/lib/libcityhash.a
lrwxr-xr-x 1 root wheel    19 Jul 11 15:16 /usr/local/lib/libcityhash.dylib -> libcityhash.0.dylib
-rwxr-xr-x 1 root wheel   977 Jul 11 15:16 /usr/local/lib/libcityhash.la

Ich verwende Mac OS X. Die gcc-Version ist 4.6, die nicht die Standard-Mac-gcc ist, aber ich habe das auch versucht.

ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0]

ffi (installiert mit Standard-gcc auf Mac, gcc 4.6 funktioniert nicht?)

Ich habe das einfachste Modul gebaut, das ich finden konnte:

require 'ffi'
module MyCityHash
  extend FFI::Library

  ffi_lib 'cityhash'
  attach_function  :CityHash64,  [:string, :size_t], :uint64    
end

aber wenn ich versuche, dieses Modul in eine Ruby-Klasse oder Skriptdatei einzubinden, erhalte ich die Fehlermeldung:

/Users/charlesmartin/.rvm/gems/ruby-1.9.2-p180/gems/ffi-1.0.9/lib/ffi/library.rb:147:in `attach_function': Function 'CityHash64' not found in [libcityhash.dylib] (FFI::NotFoundError)

CityHash64 hat die Signatur in city.h:

uint64 CityHash64(const char *buf, size_t len);

Ich wäre sehr dankbar für jeden Hinweis, wie man dieses Problem beheben kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X