Sqlite3 causing problems for bundle install and gem install

怎甘沉沦 提交于 2019-12-08 09:14:52

问题


Using Rails, whenever I try to do anything like "bundle install" or sudo gem install someGem, I get these same errors about sqlite3. I've tried both

sudo port install sqlite3 +universal

and

sudo port install rb-sqlite3 +universal

But neither has helped. Here is the error:

cmu-435163:photoGlass dpieri$ sudo gem install taps 
Password: 
Building native extensions.  
This could take a while... 
ERROR:  Error installing taps:  
    ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
checking for sqlite3.h... yes 
checking for sqlite3_libversion_number() in -lsqlite3... no 
sqlite3 is missing. Try 'port install sqlite3 +universal' 
or 'yum install sqlite3-devel' and check your shared library search path (the 
location where your sqlite3 shared library is located).
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers.  
Check the mkmf.log file for more details.  
You may need configuration options.

Provided configuration options:     
--with-opt-dir  
--without-opt-dir   
--with-opt-include  
--without-opt-include=${opt-dir}/include    
--with-opt-lib 
....

....
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.3 for inspection. Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out

UPDATE: I found the mkmf.log file and here are its contents:

find_header: checking for sqlite3.h...
-------------------- yes

"gcc -E -I.
-I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0
-I. -I/usr/local/include -I/opt/local/include -I/sw/local/include -I/usr/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE    -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common    conftest.c -o conftest.i" checked program was: /* begin */ 1: #include <sqlite3.h> /* end */

--------------------

find_library: checking for sqlite3_libversion_number() in
-lsqlite3... -------------------- no

"gcc -o conftest -I.
-I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0
-I. -I/usr/local/include -I/opt/local/include -I/sw/local/include -I/usr/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE    -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib
-L/usr/local/lib -L/opt/local/lib -L/sw/local/lib -L/usr/lib -L.       -lruby -lsqlite3  -lpthread -ldl  " conftest.c: In function ‘t’: conftest.c:3: error: ‘sqlite3_libversion_number’ undeclared (first use in this function) conftest.c:3: error: (Each undeclared identifier is reported only once conftest.c:3: error: for each function it appears in.) checked program was: /* begin */ 1: /*top*/ 2: int main() { return 0; } 3: int t() { void ((*volatile p)()); p = (void ((*)()))sqlite3_libversion_number; return 0; } /* end */

"gcc -o conftest -I.
-I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0
-I. -I/usr/local/include -I/opt/local/include -I/sw/local/include -I/usr/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE    -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib
-L/usr/local/lib -L/opt/local/lib -L/sw/local/lib -L/usr/lib -L.       -lruby -lsqlite3  -lpthread -ldl  " ld: warning: directory '/sw/local/lib' following -L not found ld: warning: in /usr/local/lib/libsqlite3.dylib, missing required architecture x86_64 in file Undefined symbols:   "_sqlite3_libversion_number", referenced from:
      _t in ccSWkK1V.o ld: symbol(s) not found collect2: ld returned 1 exit status checked program was: /* begin
*/ 1: /*top*/ 2: int main() { return 0; } 3: int t() { sqlite3_libversion_number(); return 0; } /* end */

--------------------

回答1:


Figured it out:

  1. Did "which -a ruby" and "which -a sqlite3" and "which -a gem" to realize I had two or three versions of each

  2. Use port to uninstall all the versions of Ruby, Sqlite3, and rubygems it had installed

  3. Manually uninstall the other sqlite3 that was not along the same path as Ruby and Rubygems

  4. Once Ruby, Rubygems, and Sqlite3 were all along the same bath (usr/bin) it all works fine again.



来源:https://stackoverflow.com/questions/4732006/sqlite3-causing-problems-for-bundle-install-and-gem-install

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!