Bug #5188
closedmkmf libpath order prevents use of custom libs
Description
The sqlite3 gem has an option --with-sqlite3-lib, which lets you point it to a non-default location for the libsqlite3.so file. However, mkmf still tries to use the default system libsqlite3.so even when this option is specified. I've tracked the behavior down to what I think is a bug in mkmf.rb. The command it tries is
gcc -o conftest -I/usr/include/ruby/ruby-1.9.1/x86_64-linux -I/usr/include/ruby/ruby-1.9.1/ruby/backward -I/usr/include/ruby/ruby-1.9.1 -I. -I../../../../../../../../../include -I/usr/local/include -I/opt/local/include -I/sw/local/include -I/usr/include -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -mtune=generic -Wall -fno-strict-aliasing -fPIC conftest.c -L. -L/usr/lib64 -L../../../../../../../../../lib -L/usr/local/lib -L/opt/local/lib -L/sw/local/lib -L/usr/lib -L. -rdynamic -Wl,-export-dynamic -lruby-static -lsqlite3 -lpthread -lrt -ldl -lcrypt -lm -lc
Note that -L/usr/lib64 comes before the path I specified in --with-sqlite3-lib. If you have a matching library in /usr/lib64, it will always use that instead of the one you have pointed to.
This behavior is implemented in the link_command method of mkmf.rb:
def link_command(ldflags, opt="", libpath=$DEFLIBPATH|$LIBPATH)
I believe that, instead, this should be:
def link_command(ldflags, opt="", libpath=$LIBPATH|$DEFLIBPATH)
Updated by luislavena (Luis Lavena) over 12 years ago
- Status changed from Open to Feedback
- Assignee set to luislavena (Luis Lavena)
Can you please try sqlite3 version 1.3.4?
The issue you're mentioning is something present in sqlite3-ruby 1.3.3 and that has been fixed in 1.3.4
Updated by jbl26 (Brian Lindauer) over 12 years ago
Luis,
That fixed my problem. Thank you.
Brian
Updated by luislavena (Luis Lavena) over 12 years ago
- Status changed from Feedback to Third Party's Issue
Closing this out as 3rd party issue.