Reid Thompson wrote: > On Wed, 2010-03-03 at 23:59 +0900, Saeed Bhuta wrote:
>> -rw-r--r-- 1 root root 7583 2009-09-09 17:49 pg_config_manual.h >> drwxr-xr-x 3 root root 4096 2010-03-02 10:13 8.4 > hmm -- until today, on my box
> $ sudo gem install pg
> resulted in 0.8.0 being installed
> today, it installed 0.9.0.
> try this
> in your gems directory, remove the 0.9.0 directory > (on my box this is at /usr/lib/ruby/gems/1.8/gems/pg-0.9.0)
> then try the install again
> $ sudo gem install pg
Deleted the directory and tried the install again but no luck; sudo gem install pg Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension.
/usr/bin/ruby1.8 extconf.rb checking for pg_config... yes checking for libpq-fe.h... yes checking for libpq/libpq-fs.h... yes checking for PQconnectdb() in -lpq... no checking for PQconnectdb() in -llibpq... no checking for PQconnectdb() in -lms/libpq... no Can't find the PostgreSQL client library (libpq) *** 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.
Gem files will remain installed in /var/lib/gems/1.8/gems/pg-0.9.0 for inspection. Results logged to /var/lib/gems/1.8/gems/pg-0.9.0/ext/gem_make.out -- Posted via http://www.ruby-forum.com/.
> checking for pg_config... yes > checking for libpq-fe.h... yes > checking for libpq/libpq-fs.h... yes > checking for PQconnectdb() in -lpq... no > checking for PQconnectdb() in -llibpq... no > checking for PQconnectdb() in -lms/libpq... no > Can't find the PostgreSQL client library (libpq)
I am having the exact same problem on a fresh install on Snow Leopard with Ruby 1.9.1p376 and postgres installed via homebrew. This is the last entry from mkmf.log
gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.4.2/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.4.2/lib -arch i386 -lruby-static -lms/libpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: warning: implicit declaration of function ‘PQconnectdb’ ld: library not found for -lms/libpq collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { PQconnectdb(); return 0; } /* end */
> Reid Thompson wrote: > > On Wed, 2010-03-03 at 23:59 +0900, Saeed Bhuta wrote:
> >> -rw-r--r-- 1 root root 7583 2009-09-09 17:49 pg_config_manual.h > >> drwxr-xr-x 3 root root 4096 2010-03-02 10:13 8.4 > > hmm -- until today, on my box
> > $ sudo gem install pg
> > resulted in 0.8.0 being installed
> > today, it installed 0.9.0.
> > try this
> > in your gems directory, remove the 0.9.0 directory > > (on my box this is at /usr/lib/ruby/gems/1.8/gems/pg-0.9.0)
> > then try the install again
> > $ sudo gem install pg
> Deleted the directory and tried the install again but no luck; > sudo gem install pg > Building native extensions. This could take a while... > ERROR: Error installing pg: > ERROR: Failed to build gem native extension.
> /usr/bin/ruby1.8 extconf.rb > checking for pg_config... yes > checking for libpq-fe.h... yes > checking for libpq/libpq-fs.h... yes > checking for PQconnectdb() in -lpq... no > checking for PQconnectdb() in -llibpq... no > checking for PQconnectdb() in -lms/libpq... no > Can't find the PostgreSQL client library (libpq)
Can you post the contents of mkmf.log that are located here: /var/lib/ gems/1.8/gems/pg-0.9.0/ext
Seems that it finds the headers, the pg_config tool, but It cannot link to it, which may be related to 32/64 bits binaries.
have_library: checking for PQconnectdb() in -lpq... -------------------- no
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -lpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: error: ‘PQconnectdb’ undeclared (first use in this function) conftest.c:5: error: (Each undeclared identifier is reported only once conftest.c:5: error: for each function it appears in.) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } /* end */
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -lpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: warning: implicit declaration of function ‘PQconnectdb’ ld: warning: in /Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib/libruby-static.a, file is not of required architecture ld: warning: in /usr/local/homebrew/Cellar/postgresql/8.3.9/lib/libpq.dylib, file is not of required architecture Undefined symbols: "_PQconnectdb", referenced from: _t in ccQWN7dm.o ld: symbol(s) not found collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { PQconnectdb(); return 0; } /* end */
--------------------
have_library: checking for PQconnectdb() in -llibpq... -------------------- no
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -llibpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: error: ‘PQconnectdb’ undeclared (first use in this function) conftest.c:5: error: (Each undeclared identifier is reported only once conftest.c:5: error: for each function it appears in.) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } /* end */
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -llibpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: warning: implicit declaration of function ‘PQconnectdb’ ld: library not found for -llibpq collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { PQconnectdb(); return 0; } /* end */
--------------------
have_library: checking for PQconnectdb() in -lms/libpq... -------------------- no
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -lms/libpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: error: ‘PQconnectdb’ undeclared (first use in this function) conftest.c:5: error: (Each undeclared identifier is reported only once conftest.c:5: error: for each function it appears in.) checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; } /* end */
"gcc -o conftest -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/i386-darwin10.2 .0 -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1/ruby/backward -I/Users/tel/.rvm/rubies/ruby-1.9.1-p376/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/local/homebrew/Cellar/postgresql/8.3.9/include -O2 -g -Wall -Wno-parentheses -pipe -fno-common -arch i386 conftest.c -L. -L/Users/tel/.rvm/rubies/ruby-1.9.1-p376/lib -L. -L/usr/local/homebrew/Cellar/postgresql/8.3.9/lib -arch i386 -lruby-static -lms/libpq -lpthread -ldl -lobjc " conftest.c: In function ‘t’: conftest.c:5: warning: implicit declaration of function ‘PQconnectdb’ ld: library not found for -lms/libpq collect2: ld returned 1 exit status checked program was: /* begin */ 1: #include "ruby.h" 2: 3: /*top*/ 4: int main() {return 0;} 5: int t() { PQconnectdb(); return 0; } /* end */
I see that postgres was installed using homebrew, which I'm not familiar with the settings it will use to build stuff.
I would suggest you direct these questions to the developers of pg gem, as this issue is quite specific of your combination of elements in your environment.
>> checking for pg_config... yes >> checking for libpq-fe.h... yes >> checking for libpq/libpq-fs.h... yes >> checking for PQconnectdb() in -lpq... no >> checking for PQconnectdb() in -llibpq... no >> checking for PQconnectdb() in -lms/libpq... no >> Can't find the PostgreSQL client library (libpq)
> I am having the exact same problem on a fresh install on Snow Leopard > with Ruby 1.9.1p376 and postgres installed via homebrew. This is the > last entry from mkmf.log
I assume you're the anonymous creator of this ticket:
as the description looks the same. If you are, you have the ARCHFLAGS environment variable set to "-arch i386", which isn't correct for Snow Leopard. Try either unsetting ARCHFLAGS, in which case the build system should detect the correct setting, or reset it manually to "-arch x86_64".
If you aren't the creator of that ticket (and you aren't manually setting your ARCHFLAGS to the incorrect architecture), please file a bug with the output from 'gem install pg' here:
> as the description looks the same. If you are, you have the ARCHFLAGS > environment variable set to "-arch i386", which isn't correct for Snow > Leopard. Try either unsetting ARCHFLAGS, in which case the build system > should detect the correct setting, or reset it manually to "-arch > x86_64".
Doh! Even though the system it completely new, I had copied over my bash_profile and it was indeed setting ARCHFLAGS to '-arch i386'. Works perfectly after removing it.