2.5.14 on OS X

Hey all,

Did a quick survey of the other threads and I couldn’t find an applicable thread. If I overlooked one just point me to it :slight_smile:

./configure ran fine, after I installed libpng of course but make blows out with the following message.

Making all in FvwmConsole gcc -Wall -Wno-implicit-int -g -O2 -o FvwmConsoleC FvwmConsoleC.o getline.o -L../../libs -lfvwm -lreadline -ltermcap /usr/bin/ld: Undefined symbols: _append_history _history_truncate_file _read_history_range collect2: ld returned 1 exit status make[3]: *** [FvwmConsoleC] Error 1 make[2]: *** [all-recursive] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2

Is there a simple solution?

Thanks in advance!

Simplest is probably to compile without readline, but that’s not the way to do it if you plan to use FvwmConsole. I’m not using MacOS X, so I can’t tell what’s wrong, other than that it’s related to readline.


you are missing a few libraries that fvwm needs for some of its options. I cannot remember exactly which one is responsible for the error you get. Anyway, in order to have a fully functional fvwm 2.5.14 installation, you should ensure you have the following packages :
libpng (or libpng3) , libstroke (for stroke support), imlib, readline, gtk+, giflib, libjpeg, netpbm, libtiff, glib ;
if you want full gnome support, you may also want :
orbit-dev, esound, audiofile,gnome-libs, gnome-libs-dev

All these packages may be installed using fink ; if you have fink installed, just type
sudo apt-get install
The installation of all these packages take 10 seconds each.

Assuming you have installed these packages in the /sw directory (that’s where fink install them), fetch the tarball on the fvwm site and :
untar it :
gunzip fvwm-2.5.14.tar.gz ; tar -xvf fvwm-2.5.14.tar
configure it :
sudo ./configure --prefix=/sw --libexecdir=’${prefix}/lib’ --mandir=’${prefix}/share/man’ --with-iconpath=/usr/X11R6/includes/X11/bitmaps:/sw/share/bitmaps:/sw/share/pixmaps --with-png-library=/sw/lib --with-png-includes=/sw/include --with-stroke-library=/sw/lib --with-stroke-includes=/sw/include
then run :
sudo make RANLIB=“ranlib -c” CC=“gcc -L/sw/lib”
sudo make install

The options used for configure will install fvwm in the /sw repertory. If you want to install it somewhere else, just put the correct path in the options.

Here are the settings that you get at the end : >fvwm --version
fvwm 2.5.14 compiled on (…)
with support for: Readline, Stroke, XPM, PNG, Shape, XShm, SM, Xinerama, XRender, XFT

Final remark: before installing, you may want to patch the install file to get translucency for your menu. Just ask if you want more info.

Related link in the forum: viewtopic.php?t=924

Thanks so much for all the help here! It works now.

My only question (not necessary so if you lack the time don’t answer) but why did that work?

I mean, could you describe what I did because shamefully all I did was copy paste that code after I gave up trying to understand what it was doing.

Output of fvwm -version

fvwm 2.5.14 compiled on Dec 2 2005 at 11:06:40 with support for: ReadLine, Stroke, XPM, PNG, Shape, XShm, SM, Xinerama, XRender, XFT

Thanks again!

Fink does not install the libraries (readline, libpng etc) at their usual place ; they are installed in the directory /sw/lib and /sw/include instead of being in /usr/lib, /usr/share/lib etc

So you have to tell fvwm where they are. This is handled by the .configure options. This is explained in the INSTALL.fvwm file in the fvwm tarball.

Note that these options are not very difficult to guess : these are precisely the one that fink uses to install fvwm-2.4.18. And the script used by fink to install fvwm2 is stored in the file:
(if you are on macosX 10.4 ; otherwise look for a file called fvwm2.info)

More generally the script used by fink to install an is stored in a file called .info . That file also tells you what are the dependencies (that is, what libraries or apps should be installed before starting .configure) of your application.

SIDENOTE: there is a fast way to locate files on your disk, and this is the command locate ! Locate does not search on your disk. Instead it browses through a database. In order to use locate, you should first build that database by running :
sudo /usr/libexec/locate.updatedb
It takes a few minutes to build, but after that your searches are almost instant.