5782fb0 Jul 25, 2016
@hanslub42 @davidfetter @rjkroege
120 lines (80 sloc) 3.99 KB
To build rlwrap, you'll need an ANSI C compiler (gcc will certainly
do) and GNU readline 4.2 or later. rlwrap should compile on most
unices and unix-like environments like linux, the BSDs, OS/X, solaris,
HP/UX, QNX, AIX and cygwin (special thanks to PolarHome for their
"dinosaur zoo" of ageing Unix systems!)
First, unzip the tarball or clone the git repository (git clone Then go to the rlwrap
directory. After a 'git clone' you will not yet have a configure file;
build one using autotools (e.g. autoreconf --install, cf. the section
make install
configure can be called with a number of options (e.g. if you want to
install rlwrap in a non-standard place). Do
./configure --help
to see them all. Most of them are not specific to rlwrap, except the
--enable-spy-on-readline (default: YES) If we want to keep the display
tidy when re-sizing the terminal window or printing multi-line
prompts, we have to know whether or not readline is in
horizontal-scroll-mode (i.e. wheter long lines are scrolled or
wrapped). At present, this involves a look at a private readline
variable - if you feel guilty about that, disable this option.
--enable-homegrown-redisplay (default: NO): some people report ddouble
echoing of user input. Enabling this option will cure the problem -
though the display will then flicker over slow connections
(cf. BUGS)
--enable-debug: (default: NO) Adds a --debug option to rlwrap's
repertoire. This will make rlwrap write debug information to a file
/tmp/rlwrap.debug (cf. the output of rlwrap --help for more info)
--enable-proc-mountpoint (default: /proc) mountpoint for Linux-style
procfs, used for determination of slave command's working directory.
To uninstall, do 'make uninstall'
If you want to install rlwrap as non-root, you should call configure with
the --prefix option, like:
./configure --prefix=$HOME
after which 'make install' will install rlwrap in $HOME/bin
You may have to install GNU readline (e.g using ./configure
--prefix=$HOME in the readline source directory)
rlwrap's configure script will not find this installation automatically, but
./configure --prefix=$HOME CFLAGS=-I$HOME/include CPPFLAGS=-I$HOME/include LDFLAGS=-L$HOME/lib
should work. You can add '-static' to LDFLAGS if you want to build a statically linked rlwrap,
like so:
./configure --prefix=$HOME CFLAGS=-I$HOME/include CPPFLAGS=-I$HOME/include LDFLAGS=-L$HOME/lib' -static'
If configure complains about missing Xyz (where Xyz can be ncurses, or
readline) and you are sure that Xyz is installed on your system,
consider installing Xyz-devel
completion.c is made from completion.rb by the program rbgen
(, but both files are included in
the tarball and the repository; rbgen is only needed when you change
completion.rb. Sometimes, however, after a 'git pull', make will try to
recompile completion.rb and complain about not finding rbgen. A fresh
clone, or simply 'touch completion.c' will solve this.
If the configure script is not found, you can recreate it, and all of
the other files it needs, by:
automake --add-missing
or, even shorter:
autoreconf --install
On recent OS X sytems, libreadline is not the real thing, but a
non-GNU replacement. If the linker complains about missing
symbols, install GNU readline and try again (or, better, use
a tool like brew)
Even though rlwrap now uses the excellent pseudo-terminal (pty)
handling code from rxvt, portable programming with ptys is something
of a black art. The configure script tries to guess how ptys have to
be created and handled on your system, but it may guess wrong. To
quote rxvt's configure script: "if we don't guess right then it's up
to the user", which means that you have to manually edit config.h, and
save a copy of it somewhere, as configure will re-create config.h