Compiling ruby on OS X 10.5: readline.c:703: error: ‘filename_completion_function’ undeclared
When compiling Ruby 1.8.6 (in this case, p287) on OS X 10.5, you may encounter an error similar to the following:
readline.c: In function ‘filename_completion_proc_call’:
readline.c:703: error: ‘filename_completion_function’ undeclared (first use in this function)
readline.c:703: error: (Each undeclared identifier is reported only once
readline.c:703: error: for each function it appears in.)
readline.c:703: warning: assignment makes pointer from integer without a cast
readline.c: In function ‘username_completion_proc_call’:
readline.c:730: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:730: warning: assignment makes pointer from integer without a cast
make: *** [readline.o] Error 1
make: *** [all] Error 1
Some sites suggest you will need to apply a series of patches to correct this issue and compile for Leopard, but this is not the case. Everything you need comes with OS X by default.
First, make sure your configure line is set up for OS X properly:
./configure --enable-shared --enable-pthread CFLAGS=-D_XOPEN_SOURCE=1
Then, if your
make command terminates with errors about readline, do:
cd ext/readline sudo make clean sudo ruby extconf.rb sudo make sudo make install cd ..
make should finish without error, and you can
make check and
sudo make install as expected.
Thanks to Dan Benjamin for his guide to compiling ruby and brianp’s helpful comment about the need for extconf.rb in that same post, my upgrade from ruby 1.8.4 to 1.8.6 went smoothly.