2013-10-29 19 views
11

Ben, benim için yaşamak için başarılı bir şekilde "gem install thrift" koşamam, geminin yerel uzantılarını oluştururken bir şey başarısız olur; Bu çıktısı şöyledir:Thrift Ruby gem

(acib708) ~ -> gem install thrift 
Building native extensions. This could take a while... 
ERROR: Error installing thrift: 
    ERROR: Failed to build gem native extension. 

    /Users/acib708/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb 
extconf.rb:25:in `<main>': Use RbConfig instead of obsolete and deprecated Config. 
extconf.rb:25:in `<main>': Use RbConfig instead of obsolete and deprecated Config. 
checking for strlcpy() in string.h... yes 
creating Makefile 

make "DESTDIR=" 
compiling binary_protocol_accelerated.c 
compiling bytes.c 
compiling compact_protocol.c 
compiling memory_buffer.c 
compiling protocol.c 
compiling strlcpy.c 
             ^

(...)

In file included from strlcpy.c:20: 
./strlcpy.h:28:15: error: conflicting types for '__builtin___strlcpy_chk' 
/usr/include/secure/_string.h:105:3: note: expanded from macro 'strlcpy' 
    __builtin___strlcpy_chk (dest, src, len, __darwin_obsz (dest)) 
^
./strlcpy.h:28:15: note: '__builtin___strlcpy_chk' is a builtin with type 'unsigned long (char *, const char *, unsigned long, unsigned long)' 
/usr/include/secure/_string.h:105:3: note: expanded from macro 'strlcpy' 
    __builtin___strlcpy_chk (dest, src, len, __darwin_obsz (dest)) 
^
4 errors generated. 
make: *** [strlcpy.o] Error 1 


Gem files will remain installed in /Users/acib708/.rvm/gems/ruby-2.0.0-p247/gems/thrift-0.9.1 for inspection. 
Results logged to /Users/acib708/.rvm/gems/ruby-2.0.0-p247/gems/thrift-0.9.1/ext/gem_make.out 

Ben web etrafında benzer hataların bir sürü gördüm ama çözüm bulamadım. Yeni bir rvm/ruby-2.0.0-p247 kurulumu ile OS X 10.9 çalıştırıyorum. Herhangi bir fikir? Teşekkürler. Mücevher kullanarak millet için geçici bir düzeltme, bir makro yerine strlcpy bir işlev yapmak için 0'a _FORTIFY_SOURCE makro define'ing # ayarlamayı deneyin gibi

+1

XCode güncel mi? – Vidya

+0

Evet, en yeni sürüm. – acib708

+2

@ AlejandroCárdenas Lütfen cevaplardan birini kabul edin. Bu çalışkan millet size yardımcı olmak için zamanında koymak, onay işareti simgesini tıklamanız yeterlidir, teşekkürler – nhed

cevap

56

an için sorun https://issues.apache.org/jira/browse/THRIFT-2219

bulunabilir : bir workaro kullanmak yerine

bundle config build.thrift --with-cppflags='-D_FORTIFY_SOURCE=0' 
+1

Teşekkürler. Bu benim için çalıştı. – arnab

+3

Ayrıca benim için çalıştı! 'Bundle config' komutunu çalıştırdım ve daha sonra 'bundle install' ı tekrar çalıştırdım ve harika çalıştı. –

+0

Bu harika, teşekkürler! –

3

: Eğer bundler kullanıyorsanız

gem install thrift -- --with-cppflags='-D_FORTIFY_SOURCE=0' 

ya, sen aracılığıyla yerel tutumluluk için CFLAGSın ayarlayabilirsiniz ve cppflags ile __has_builtin (strlcpy) 'yi kontrol eden bir sabitleme yaptım ve eğer strlcpy tanımlanmışsa ve strlcpy tanımlanmışsa, daha önce olduğu gibi externs kullanır. 10.8, 10.9, centos, ubuntu, ...

6

OS 10.9.4 günü komut aşağıda benim için çalıştı x os üzerinde çalışır

bundle config build.thrift "--with-cppflags=-D_FORTIFY_SOURCE=0" 
0

sonra ~/.bundle/config dosyasını düzenleyin Şöyle görünüyor:

--- 
BUNDLE_BUILD__THRIFT: "--with-cppflags=\"-D_FORTIFY_SOURCE=0 -Wno-shift-negative-value\"" 

Bu benim için çalışıyor, teşekkürler.