The molmol software that is available from the website of ETH Zurich does not compile on Ubuntu Linux without some changes. It seems that it is no longer supported by ETH Zurich, but can be downloaded from several other websites (just google it). I describe below what I needed to do to get it to compile and run on Ubuntu Linux.
A summary of the installation procedure as described in the readme file follows for reference, but it does not seem to work without the changes mentioned below:
tar xvzf molmol-2k.2.0-doc.tar.gz tar xfzf molmol-2k.2.0-src.tar.gz cd tiff-v3.4 ./configure make sudo make install cd .. cp makedef.lnx makedef ./INSTALL make sed -i 's/ksh/sh/g' molmol cd src/main strip molmol cp molmol ../../molmol.lnx cd ../.. ./molmol |
First, some additional packages are needed in Ubuntu:
sudo apt-get install libmotif-dev x11proto-print-dev libxpm-dev libxt-dev |
(depending on your current ubuntu installation, you may need some other packages as well. Some error messages during the installation may give you an indication of what else is needed.)
However, when I tried to compile molmol, the following error occured:
/usr/bin/gcc -I../../tools/include -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow -Dsinf=sin -Dcosf=cos -Dtanf=tan -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 -Dfabsf=fabs -Dceilf=ceil -O2 -I../../tools/include -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow -Dsinf=sin -Dcosf=cos -Dtanf=tan -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 -Dfabsf=fabs -Dceilf=ceil -c -o RandNum.o RandNum.c In file included from /usr/include/math.h:94, from RandNum.c:29: /usr/include/bits/mathcalls.h:55: error: conflicting types for ‘acos’ /usr/include/bits/mathcalls.h:57: error: conflicting types for ‘asin’ /usr/include/bits/mathcalls.h:59: error: conflicting types for ‘atan’ /usr/include/bits/mathcalls.h:61: error: conflicting types for ‘atan2’ /usr/include/bits/mathcalls.h:64: error: conflicting types for ‘cos’ /usr/include/bits/mathcalls.h:66: error: conflicting types for ‘sin’ /usr/include/bits/mathcalls.h:68: error: conflicting types for ‘tan’ /usr/include/bits/mathcalls.h:101: error: conflicting types for ‘exp’ /usr/include/bits/mathcalls.h:110: error: conflicting types for ‘log’ /usr/include/bits/mathcalls.h:154: error: conflicting types for ‘pow’ /usr/include/bits/mathcalls.h:157: error: conflicting types for ‘sqrt’ /usr/include/bits/mathcalls.h:179: error: conflicting types for ‘ceil’ /usr/include/bits/mathcalls.h:182: error: conflicting types for ‘fabs’ make[4]: *** [RandNum.o] Error 1 |
This was easily solved by editing the makedef file as follows:
change
MISSFUNC = -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow \ -Dsinf=sin -Dcosf=cos -Dtanf=tan \ -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 \ -Dfabsf=fabs -Dceilf=ceil |
to
# MISSFUNC = -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow \ # -Dsinf=sin -Dcosf=cos -Dtanf=tan \ # -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 \ # -Dfabsf=fabs -Dceilf=ceil |
At this point, I got a second error
/usr/bin/sleep 2 make[6]: /usr/bin/sleep: Command not found |
This one is even easier to solve, by again editing makedef:
change
WAIT = /usr/bin/sleep 2 |
to
WAIT = /bin/sleep 2 |
Another error occurs that requires us to make some changes in the source code. The error message is:
/usr/bin/gcc -o molmol -I../../tools/include -I../../sg/include -I../../include -O2 MolMol.o MolInit.o ../../lib/libcip.a ../../lib/libcmd.a ../../lib/libui.a ../../lib/libgraph.a ../../lib/libio.a ../../lib/libpu.a ../../lib/libcalc.a ../../lib/libprim.a ../../lib/libdata.a ../../lib/libattr.a ../../lib/libfileio.a ../../lib/libos.a ../../sg/lib/libsg.a ../../tools/lib/libtools.a -L/usr/X11R6/lib -lXm -lXt -lX11 -lm -lc -lieee ../../lib/libos.a(GFile.o): In function `raiseError': GFile.c:(.text+0x37): warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference in ../../lib/libos.a(GFile.o) /lib/libc.so.6: could not read symbols: Bad value collect2: ld returned 1 exit status make[4]: *** [molmol] Error 1 |
The following changes to the source-code solved the problem.
Add the following line to the file ./src/os/GFile.c
#include <errno.h> |
add it for example under the line that says
#include <linlist.h> |
Also change the following line (line 85 after the previous edit):
msg = sys_errlist[errno]; |
to
msg = strerror(errno); |
Molmol shoud compile now, but unfortunately the problems are not finished yet. After having stripped and copied molmol from ./src/main to molmol.lnx as in the original instructions, when we try to run it, it says:
MOLMOL 2K.2 Version 2.1-2.6: Copyright (c) 1994-98 by Institut fuer Molekularbiologie und Biophysik, ETH Zurich Spectrospin AG, Faellanden, Switzerland Version 2K.2: Custom version by Reto Koradi, 1999-2003 using Motif/OpenGL unknown IO device |
This can be solved by editing the startup script (the file called molmol):
Comment out the following lines (line 192-209):
#if [ -n "$nograph" ]; then # MOLMOLDEV=TTY/NO #elif [ -n "$MOLMOLDEV" ]; then # true # already set #elif [ -n "$localdev" -a \(\) ]; then # MOLMOLDEV=$localdev #elif [ -x $xdpy ]; then # xdpyout=`$xdpy -d $display 2>&1 | egrep 'GLX|unable'` # case $xdpyout in # *unable*) MOLMOLDEV=TTY/NO # nograph=y # continue;; # *GLX*) if [ -n "$glxdev" ]; then # MOLMOLDEV=$glxdev # fi # continue;; # esac #fi |
I hope this helps!
Excellent instructions. Saved a lot of time.
Thanks for the instructions! It MOSTLY works but I don't seem to have any molmol startup script... where do I find it?
When I start molmol.lnx it starts, shows up an interface and says:
"Menubar file could not be opened, check installation (setting of MOLMOLHOME)"
Any clue what's the problem?
Thanks
nico
The error message you get is normal. The startup script makes some settings that are necessary for molmol to work. Because you start molmol.lnx directly without the script, you get this error message.
It can be solved by setting the environment variable MOLMOLHOME to the value of the directory where molmol is located. If you are using bash:
# export MOLMOLHOME=/home/username/wherever/your/molmol/is/installed
A better way is to find the startup script. It should be in your molmol directory, with the filename molmol. Do not forget to make the changes to the script as I mention above. If the script is not there I would suggest to get it from the original molmol archive you downloaded.
Thank you for your reply. Unfortunately I don't seem to have that startup script... and exporting MOLMOLHOME does not seem to help.
The file I have does not seem to have an INSTALL script either... I think we may be using different versions?
I downloaded mine from:
ftp://ftp.mol.biol.ethz.ch/software/MOLMOL/unix/molmol-2k.2.0-src.tar.Z
Is it the same?
Thanks
nico
Hi nico,
I have the same version, but you also need to download the following file: molmol-2k.2.0-doc.tar.gz
Despite its name, it contains more than documentation, including the essential startup script. Maybe your error message is also due to this.
Finally, it works! Thanks for your help!
The name of the file was indeed misleading!
Thank you for sharing this!!
This really helped me to install molmol at linux box!!
Thanks this is really useful. Works on Debian lenny x86_64.
Thanks for sharing the details. This helped me install Molmol on Mac. I was having problem with the installation of the menubar.
I have been trying to run that in a very similar manner on Fedora 13 but unfortunately I got the following information:
...............................................
TO -O2 -I../../tools/include -I../../sg/include -I../../include -DFUNCPROTO -c -o MotifInit.o MotifInit.c
MotifInit.c:29:19: error: Xm/Xm.h: No such file or directory
MotifInit.c:30:26: error: Xm/Protocols.h: No such file or directory
MotifInit.c: In function ‘PuMotifInit’:
MotifInit.c:68: error: ‘XmNiconName’ undeclared (first use in this function)
MotifInit.c:68: error: (Each undeclared identifier is reported only once
MotifInit.c:68: error: for each function it appears in.)
make[4]: *** [MotifInit.o] Error 1
make[4]: Leaving directory `/usr/MOLMOL/src/motif'
make[3]: *** [motif] Error 2
make[3]: Leaving directory `/usr/MOLMOL/src'
make[2]: *** [default] Error 2
make[2]: Leaving directory `/usr/MOLMOL/src'
make[1]: *** [src] Error 2
make[1]: Leaving directory `/usr/MOLMOL'
make: *** [default] Error 2
What should I do ?
Thank you for information in advance
Fortunately I've resolved above problem. I was missing libtiff library.
Thanks Dariusz for also posting the solution to your problem, hopefully it will be of help for someone else.
Thanks a lot you really saved me a lot of time! thumbs up!
Thanks for your sharing. I try what you said, but there are still some troubles like this
/usr/bin/gcc -I../../tools/include -I../../sg/include -I../../include -DFUNCPROTO -O2 -I../../tools/include -I../../sg/include -I../../include -DFUNCPROTO -c -o MotifDev.o MotifDev.c
In file included from MotifDev.c:34:
motif_busy.h:27:27: error: X11/Intrinsic.h: No such file or directory
In file included from MotifDev.c:34:
motif_busy.h:31: warning: parameter names (without types) in function declaration
motif_busy.h:33: warning: parameter names (without types) in function declaration
make[4]: *** [MotifDev.o] Error 1
make[4]: Leaving directory `/home/ypg/Downloads/molmol-2k.2.0/src/motif'
make[3]: *** [motif] Error 2
make[3]: Leaving directory `/home/ypg/Downloads/molmol-2k.2.0/src'
make[2]: *** [default] Error 2
make[2]: Leaving directory `/home/ypg/Downloads/molmol-2k.2.0/src'
make[1]: *** [src] Error 2
make[1]: Leaving directory `/home/ypg/Downloads/molmol-2k.2.0'
make: *** [default] Error 2
Could you help me?
I am not sure as I did not encounter this error myself, but it looks like you need to install the development files for libxt. In Ubuntu this is the package called libxt-dev.
Please give it a try and let me know if it solves your problem.
Thank you very much for your help!! The problem has been solved. This is my first time to use linux. Thank you so much.
I added this information to my blog post to make sure other molmol users that follow the steps will have libxt-dev available when they try to compile.
I had to uninstall libmotif and install lesstif (including -dev) to get this working. I'm on 64bit
The above has indeed only been tested on a 32-bit system. Thanks for sharing this information Mikhail.
Hi louic,
I met a problem when I went to this step.
cd /src/main
I could not find "molmol", but these files:
makedep Makefile MolInit.c mol_init.h MolMol.c MolWin.c
I try to use different paths to install it, but got the same result. Could you help me check the reason? Thx~
It is difficult to say what the problem is without more information. But what I can see from your comment is that the . (dot) is missing in ./src/main
Indeed very useful information. Though I compiled Molmol successfully on 64bit Mandriva 2010.2, I have issue while saving the figures. Neither of Tiff, PNG, JPEG nor BMP formats are working. The error reads 'dumping of image not supported by IO device'. I can save PS file. I do see this error was dealt while porting it to OSX (http://www.finkports.info/ports/sci/molmol.html). Any suggestion will be highly appreciated. Thank you.
Have you got the tiff and libpng libraries installed? Maybe that helps. Also check if the location of these libraries is set correctly in the Makefile.
On the other hand, you get better quality images by exporting them as .POV and then rendering with POV-ray, so I would suggest to give that a try instead.
Thanks for your reply. The libraries are in the right place and get linked to the molmol correctly.
I think I see what the problem is, but unfortunately I have no time to fix it at the moment. It also does not have priority for me, as I always export as POV, and then render the image with POV-ray. I suggest you do the same.
If you really need the TIFF, PNG, JPEG, BMP functionality, your link to the finkports website appears to give the solution. The files on that website are patches (diff-files), so if you learn how to use them and make the suggested modifications to a few of the files, maybe it'll work...
Thanks for your tutorial! It helped me install on a linux machine running red hat.
Terrific, thanks.
Works flawlessly on Ubuntu 10.04 LTS - Lucid Lynx
Hi and thanks for the nice guide. Even though molmol compiles without any errors, I get a strange behavior when I want to display a molecule in a "Ribbon" style. Molmol converts the molecule to Ribbon, but the colors are not output correctly. The 3D effects, which the Ribbon-display should normally show, are totally absent. Do you know what could be causing those problems? I have experienced this behavior both on a 64bit Ubuntu (11.04) and on a 32bit Opensuse (11.4) system.
I have also noticed this problem, but unfortunately I don't have time to investigate it at the moment.
If you do find a solution, please share it with everybody.
Thank you, but I have some errors that
make[4]: *** [RandNum.o] Error 1
make[4]: Leaving directory `/usr/local/include/molmol/tools/src'
make[3]: *** [src] Error 2
make[3]: Leaving directory `/usr/local/include/molmol/tools'
make[2]: *** [default] Error 2
make[2]: Leaving directory `/usr/local/include/molmol/tools'
make[1]: *** [tools] Error 2
make[1]: Leaving directory `/usr/local/include/molmol'
make: *** [default] Error 2
How to fix it?
Hi Mijiddorj,
If I am not mistaken you are missing the motif development files. You need several development files (source code) to compile molmol. In Ubuntu, these packages are called:
I am not sure about the names in Arch linux, but probably something very similar. You should be able to install them with your package manager.
When I write make after ./INSTALL, I've got this errors :
make tools sg src TARGET=default
make[1]: entrant dans le répertoire « /home/chrystel/molmol »
cd tools; make default
make[2]: entrant dans le répertoire « /home/chrystel/molmol/tools »
make src TARGET=default
make[3]: entrant dans le répertoire « /home/chrystel/molmol/tools »
cd src; make default
make[4]: entrant dans le répertoire « /home/chrystel/molmol/tools/src »
/usr/bin/gcc -I../../tools/include -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow -Dsinf=sin -Dcosf=cos -Dtanf=tan -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 -Dfabsf=fabs -Dceilf=ceil -O2 -I../../tools/include -Dsqrtf=sqrt -Dexpf=exp -Dlogf=log -Dpowf=pow -Dsinf=sin -Dcosf=cos -Dtanf=tan -Dasinf=asin -Dacosf=acos -Datanf=atan -Datan2f=atan2 -Dfabsf=fabs -Dceilf=ceil -c -o RandNum.o RandNum.c
In file included from /usr/include/math.h:94:0,
from RandNum.c:29:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:55:1: erreur: conflicting types for ‘acos’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:57:1: erreur: conflicting types for ‘asin’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:59:1: erreur: conflicting types for ‘atan’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:61:1: erreur: conflicting types for ‘atan2’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:64:1: erreur: conflicting types for ‘cos’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:66:1: erreur: conflicting types for ‘sin’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:68:1: erreur: conflicting types for ‘tan’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:101:1: erreur: conflicting types for ‘exp’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:110:1: erreur: conflicting types for ‘log’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:155:1: erreur: conflicting types for ‘pow’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:158:1: erreur: conflicting types for ‘sqrt’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:180:1: erreur: conflicting types for ‘ceil’
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:183:1: erreur: conflicting types for ‘fabs’
make[4]: *** [RandNum.o] Erreur 1
make[4]: quittant le répertoire « /home/chrystel/molmol/tools/src »
make[3]: *** [src] Erreur 2
make[3]: quittant le répertoire « /home/chrystel/molmol/tools »
make[2]: *** [default] Erreur 2
make[2]: quittant le répertoire « /home/chrystel/molmol/tools »
make[1]: *** [tools] Erreur 2
make[1]: quittant le répertoire « /home/chrystel/molmol »
make: *** [default] Erreur 2
How to fix it ?
Tanks
Hey, Louic,
I wonder if you are still maintaining this blog. If you are, could you please help? I followed the above instructions, and I kept on getting this message:
GL/GLwMDrawA.h: No such file or directory
compilation terminated.
I am running on Ubuntu 12.04 LTS.
Thanks.
Xu
Ha, I got it fixed. Turns out that if i get the exact files you used it works.Thanks.
Xu
Hi, very useful instructions! I had the same errors with CentOS 6 as described and could fix them. However it still does not compile. I now get:
...
/usr/bin/ld: cannot find -lXpm
collect2: ld returned 1 exit status
make[4]: *** [molmol] Error 1
make[4]: Leaving directory `/home/marios/SW/molmol/src/main'
make[3]: *** [main] Error 2
make[3]: Leaving directory `/home/marios/SW/molmol/src'
make[2]: *** [default] Error 2
make[2]: Leaving directory `/home/marios/SW/molmol/src'
make[1]: *** [src] Error 2
make[1]: Leaving directory `/home/marios/SW/molmol'
make: *** [default] Error 2
Hi, Thanks!
I can confirm this works on Ubuntu 16.04 LTS on an x86_64. Didn't need to do the TIFF bit in the beginning as it was already installed in the system. These instructions rocks.
Wai
Thanks for letting me know that this still works!
Dear Louic,
At the outset I want to thank you for the very detailed instructions that you have provided for compiling MOLMOL.
I have managed to compile this program under Ubuntu 20.04.1 LTS.
There are few additions to the instructions that were necessary. I would like to post these here, since this is the definitive source for compilation.
1) I downloaded the source code from
http://www.bionmr.com/forum/downloads-48/new-file-added-molmol-linux-unix-windows-4775/molmol-code-315dc678a401fcce8155bccf28e83421e6ece482.zip
2) Unzipping this file gives the doc and src directories and other files.
3) cd src/tiff-v3.4
./configure
make
sudo make install
4) cd ..
5) cp makedef.lnx makedef
make the changes suggested by you to the makedef file
6) Make the changes to the src/os/GFile.c
7)cp ../doc/molmol .
8) ./INSTALL
9) make
However this will throw up and error
/usr/bin/ld cannot find libieee
At this stage you may have to install libieee*-dev
sudo apt install libieee1284-3-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libieee1284.so.3 /usr/lib/libieee.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libieee1284.a /usr/lib/libieee.a
Instructions can be found @
https://github.com/ljacobson64/MCNP_CMake/issues/1
From here on the compilation runs fine as per your instructions.
****Important****
Both the molmol and molmol.lnx files have to be copied to the doc directory for molmol to be executed without error such as the "Menubar file could not be opened, check".
Lastly, apropos Reto's comment, One can improve the ribbon display by choosing
Options ---> Rendering ----> Hidden Surface elimination.
Please note that most of this works because of your Instructions. Thank you once again.
Siddhartha
Thanks for your update to the instructions Siddhartha. I am working on a new website and when it is ready I will include your suggestions.
Dear Louic,
Thanks for these instructions. I was able to run molmol on Ubuntu 20.04. The only problem is graphics. There are no shades or lights and ribbon basically looks flat. Do you know the solution for this problem. I use Nvidia Gforce GTX 1650 card on my worksation.
Thanks,
Maciej
Hi Maciej, Great that you got it working, but I'm afraid I cannot help you with the graphics. The solution I found to get molmol working is to turn the 3D renderer off: the part of my instructions where you comment out lines 192-209 does exactly that. Maybe there is a way to install the correct libraries and get it working, but I did not find it.