Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我无法在os x 10.6.8上构建couchbase ruby gem_Ruby_Xcode_Gcc_Osx Snow Leopard_Couchbase - Fatal编程技术网

我无法在os x 10.6.8上构建couchbase ruby gem

我无法在os x 10.6.8上构建couchbase ruby gem,ruby,xcode,gcc,osx-snow-leopard,couchbase,Ruby,Xcode,Gcc,Osx Snow Leopard,Couchbase,我的目标是通过构建本机扩展来安装couchbase ruby gem,但是我发现gem和libcouchbase C库之间的架构不匹配。以下是一些背景: 我正在运行OSX10.6.8,使用rvm和从源代码构建的Ruby1.9.2-p320 直到昨天,我还在运行OS X 10.6.7和Xcode 3.2.5,但我无法以本机方式构建libcouchbase 然后,我安装了brew,这有助于简化libcouchbase的安装,brew告诉我需要升级到至少Xcode 3.2.6 我为雪豹下载了难以捉摸

我的目标是通过构建本机扩展来安装couchbase ruby gem,但是我发现gem和libcouchbase C库之间的架构不匹配。以下是一些背景:

  • 我正在运行OSX10.6.8,使用rvm和从源代码构建的Ruby1.9.2-p320
  • 直到昨天,我还在运行OS X 10.6.7和Xcode 3.2.5,但我无法以本机方式构建libcouchbase
  • 然后,我安装了brew,这有助于简化libcouchbase的安装,brew告诉我需要升级到至少Xcode 3.2.6
  • 我为雪豹下载了难以捉摸的Xcode4.2,因为它比雪豹小2千兆 Xcode 3.2.6,我想我会得到最新版本
  • Xcode不会安装,因为我发现证书错误是由于系统安装程序中的错误造成的,修复方法是升级到OS X 10.6.8,然后应用系统更新
  • 几个小时后重新启动,我正在运行安装了XCode 4.2的OS X 10.6.8,libcouchbase通过brew编译,没有任何问题
  • 我现在尝试安装couchbase gem,但构建本机扩展失败。它表示,即使显式传递库的位置,也无法找到libcouchbase
  • 查看mkmf.log显示以下内容(添加了粗体强调,但我可能对该问题的看法是错误的!
"/usr/bin/gcc-4.2-o conftest-I/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1/universal-darwin10.8.0-I/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1-I-I-I/usr/local/2.9.2-libera/lib/I/I-19/include/local/I/usrsers/emkman/.rvm/rubies/ruby-1.9.2-p320/include-I/usr/include-I/Users/emkman/.rvm/usr/include-D_XOPEN_SOURCE-D_DARWIN_C_SOURCE-O3-ggdb-Wextra-Wno未使用的参数-Wno括号-Wpointer arith-Wwrite字符串-Wno缺少字段初始值设定项-Wshorten-64-to-32-Wno long-arch i386-arch x86-u 64-fno公共管道-std=99-Wall-Wextra conftest.c-L-L-L/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/lib-L/usr/local/ceral/libevent/2.0.19/lib-L/opt/local/lib-L/usr/local/lib-L/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/lib-L/lib-L/Users/emkman/.rvm/usr/lib-L/lib-L-L/usr/lib-L-L/usr/lib-L-L/usr-lib-L/lib-L/Users-L-L-L-L-arch-L-L-L-L/usr/usr/usr/usr/lib-lib-lib-lib- " 检查的程序是:

"/usr/bin/gcc-4.2-I/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1/universal-darwin10.8.0-I/Users/emkman/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.2/emkman/.rvm/rubies/1.9.1-p320/include/usr/local/cillar/libevent/2.0/include/I/I/usr/local/emkman/I/I/I/I/I/I/I/usr/19.9/emkman/.rvm/rubies/ruby-1.9.2-p320/include-I/usr/include-I/Users/emkman/.rvm/usr/include-D_XOPEN_SOURCE-D_DARWIN_C_SOURCE-O3-ggdb-Wextra-Wno未使用参数-Wno括号-Wpointer arith-Wwrite字符串-Wno缺少字段初始值设定项-Wshorten-64-to-32-Wno long-arch i386-arch x86-u 64-fno common-pipe-std=c99-Wall-Wextra-arch-archi386-arch x86_64-c conftest.c“ 检查的程序是:

我知道这是很多信息,但我只是想彻底了解细节,并表明我几乎尝试了所有方法。我还应该提到,我尝试了gem的开发者预览与libcouchbase的开发者预览相结合,错误是相同的。有两件事我没有尝试:

  • 安装XCode 4.1 for Snow Leopard-Apple将不再提供该文件的下载,尽管理论上支持该文件
  • 为雪豹安装Xcode 3.2.6-我试图避免4gb下载,但我现在刚刚开始,今晚晚些时候可以尝试

  • 非常感谢您的帮助,尤其是如果您以前在OS X上构建过couchbase gem。

    我认为这是一个好问题,因为我记得自己也曾经历过类似的痛苦,试图构建gem。但是那是很久以前的事了,我手头没有文件等,无法记住我做了什么,或者我的错误是否与您的一样


    我知道这不如直接回答好,但我认为你应该可以在这里联系gem作者:或者通过Twitter上的@avsej。

    尝试以下步骤,这为我解决了问题:

    brew unlink libcouchbase
    brew install libcouchbase@2
    brew link --force --overwrite libcouchbase@2
    brew update && brew upgrade
    
    然后尝试bundle安装或gem安装

    bundle install
    

    我最终安装了一个新的ruby 1.9.3(通过rvm)它只构建了64位。这样就可以构建64位gem并使用64位libcouchbase。我想,继续前进,我不可能也不应该担心构建32位gem/库。我们会看到的。谢谢你的帮助。编辑:我还应该提一下,我给作者发了一封电子邮件,告诉他其他一些事情,他确实回复了,并且得到了帮助pful,也感谢@avsej所做的一切。
    /* begin */
    1: #include "ruby.h"
    2: 
    3: #include <libcouchbase/couchbase.h>
    4: 
    5: /*top*/
    6: int main() {return 0;}
    7: int t() { void ((*volatile p)()); p = (void ((*)()))libcouchbase_server_versions; return 0; }
    /* end */
    
    /* begin */
    1: #include "ruby.h"
    2: 
    3: #include <libcouchbase/couchbase.h>
    4: 
    5: /*top*/
    6: int main() {return 0;}
    7: int t() { libcouchbase_server_versions(); return 0; }
    /* end */
    
    interpreter:  "ruby"
    version:      "1.9.2p320"
    date:         "2012-04-20"
    platform:     "universal.x86_64-darwin10.8.0"
    patchlevel:   "2012-04-20 revision 35421"
    full_version: "ruby 1.9.2p320 (2012-04-20 revision 35421) [universal.x86_64-darwin10.8.0]"
    
    brew unlink libcouchbase
    brew install libcouchbase@2
    brew link --force --overwrite libcouchbase@2
    brew update && brew upgrade
    
    bundle install