Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Xcode 使用自制安装的gcc编译器时发生rails 4 gem安装错误_Xcode_Macos_Gcc_Gem_Ruby On Rails 4 - Fatal编程技术网

Xcode 使用自制安装的gcc编译器时发生rails 4 gem安装错误

Xcode 使用自制安装的gcc编译器时发生rails 4 gem安装错误,xcode,macos,gcc,gem,ruby-on-rails-4,Xcode,Macos,Gcc,Gem,Ruby On Rails 4,我正在为rails 4安装gem sqlite3,但出现编译错误。这是一款全新的MacBookPro,安装了Mavericks操作系统。我已经安装了XCode,但也使用自制软件(使用说明)安装了GCC4.9。在我尝试安装gem sqlite3时出现编译错误之前,一切都很顺利: app_folder git:(mybranch) gem install sqlite3 -v '1.3.8' Building native extensions. This could take a

我正在为rails 4安装gem sqlite3,但出现编译错误。这是一款全新的MacBookPro,安装了Mavericks操作系统。我已经安装了XCode,但也使用自制软件(使用说明)安装了GCC4.9。在我尝试安装gem sqlite3时出现编译错误之前,一切都很顺利:

    app_folder git:(mybranch) gem install sqlite3 -v '1.3.8'
    Building native extensions.  This could take a while...
    ERROR:  Error installing sqlite3:
ERROR: Failed to build gem native extension.

    /Users/myname/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb
    checking for sqlite3.h... yes
    checking for sqlite3_libversion_number() in -lsqlite3... yes
    checking for rb_proc_arity()... yes
    checking for sqlite3_initialize()... yes
    checking for sqlite3_backup_init()... yes
    checking for sqlite3_column_database_name()... no
    checking for sqlite3_enable_load_extension()... no
    checking for sqlite3_load_extension()... no
    checking for sqlite3_open_v2()... yes
    checking for sqlite3_prepare_v2()... yes
    checking for sqlite3_int64 in sqlite3.h... yes
    checking for sqlite3_uint64 in sqlite3.h... yes
    creating Makefile

    make "DESTDIR="
    compiling backup.c
    gcc-4.9: error: unrecognized command line option '-Wshorten-64-to-32'
    make: *** [backup.o] Error 1
在对这个问题做了一些研究之后,我发现除了这个命令行选项是特定于mac的,并且自制的gcc编译器没有它之外,几乎没有其他信息!有没有办法让我切换回原生mac gcc编译器?我该如何解决这个问题?为什么在任何地方都很少提到它

    gcc -v
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-       include-dir=/usr/include/c++/4.2.1
    Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
    Target: x86_64-apple-darwin13.0.1

我刚刚安装了Rails,有过类似的经历。我通过让osx识别正确的g++版本,然后重新安装ruby来修复它。以下是一些建议:

  • 您可以使用以下代码通过.bash_配置文件设置gcc和g++版本

    export CC=gcc-4.9
    export CXX=g++-4.9
    export CPP=cpp-4.9
    
    用g++-v检查你的g++版本。如果这不起作用,你可能需要做一些黑客

  • 根据,您可以删除/usr/bin中的默认g++,并将其替换为g++-4.9的新符号链接:

    sudo mv /usr/bin/g++ /usr/bin/g++.bak && sudo ln -s /usr/local/bin/g++-4.9 /usr/bin/g++
    
    注意:此命令不同于链接页面中的命令(移动/usr/local/bin/g++)。我在/usr/local/bin/中没有g++的副本,因此我修改了命令以使用/usr/bin

    再次检查g++-v。它现在应该反映了g++的正确版本

  • 一旦你的g++版本被检查出来,你可以尝试重新安装ruby。这可以确保您的ruby版本是使用与构建gems时使用的编译器相同的编译器编译的

        rvm install 2.0.0
    
    一旦你做到了,重复一遍

        gem install sqlite3 -v '1.3.8'
    
    希望这现在能奏效