If you build (xm)grace without the presence of libpdf, you won’t be able to save figures as PDF files. I compiled both — libpdf and grace — as non-privileged user:
If you want to keep it cheap, you should use the lite version of libpdf. I used version 7.0.5 lite. The build process worked very uncomplicated. As installation directory tree, I chose a place where I have full write access to and where I already placed other self-built software.
./configure --prefix=/home/bioinfp/jang/apps make make install
I chose to built the 5.1.22 version. Now, we have to make sure that
- the test scripts during
- the compiler and linker
will find the newly built pdflib (namely, the header and shared object files). Therefore , we will make use of several environment variables. At first, store the actual paths, which looked like that for me:
configure, we will tell the compiler and linker to look there for header and library files via the environment variables
LDFLAGS. Additionally, we will add the path stored in PDFLIB to the search path for libraries during binary execution via
LD_LIBRARY_PATH. This is required already during
configure due to some specific testing method for the existence of pdflib. The resulting
configure command, as it worked for me, looks like:
./configure --prefix=/home/bioinfp/jang/apps/grace --enable-pdfdrv CPPFLAGS="-I $PDFINCLUDE" CFLAGS="-I $PDFINCLUDE" LDFLAGS="-L $PDFLIB" LD_LIBRARY_PATH=$PDFLIB:$LD_LIBRARY_PATH
configure was successfull, compile:
LD_LIBRARY_PATH=$PDFLIB:$LD_LIBRARY_PATH ; ./src/xmgrace -version
Side note: Here, you already see that from now on, whenever you want to start the grace executable, you at first have to add the path of libpdf’s shared object files to the environment variable
LD_LIBRARY_PATH. This is because we were not able to place the libpdf library files to the proper place (like to
/usr/local/lib). You can inform yourself about this topic quite well at this point. And here you can read why this approach, in general, is not a good approach — but we have no other choice here.
So, the output of the command above should contain something like that:
Registered devices: X11 PostScript EPS PDF MIF SVG PNM JPEG PNG Metafile
There should definitely be the PDF device now :-) For me it obviously worked, so I proceeded with the installation:
To automatically set
LD_LIBRARY_PATH correctly whenever you call
xmgrace (or any of the other executables the installation created — yes, there are some more:
convcal, fdf2fit, gracebat, grconvert), you can follow two approaches:
- edit your
~/.bashrcfile (or the comparable file for other shells) and change your
LD_LIBRARY_PATHglobally. This is considered to be the “worst” approach, but should work fine under normal circumstances.
- for each executable, create a “wrapper shell script” that at first sets
LD_LIBRARY_PATHand then executes the original executable. Make sure that these wrapper scripts are in
PATHbefore the directory where the original executables are in.
Leave a Reply