• Home »
  • Errors »
  • Compiling ruby on OS X 10.5: readline.c:703: error: ‘filename_completion_function’ undeclared

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[1]: *** [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 ..

Now 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.

Share