If your system and your compiler support shared libraries, compilation of the grp2c package produces two kind of Parser Library, classical static library and a shared one.
$ CC -static YourOptions -LPREFIX/lib
-lparser
$ CC YourOptions -LPREFIX/lib
-lparser
It is enough because if the linker find both static and shared library and it supports dynamic linking, it will use shared library instead of static one. You can check the result of the linking with the ldd command, see the manual pages how to use it. If you find out that something is wrong, you can try to use -shared option with the linker/compiler.
$ echo $LD_LIBRARY_PATH
If the variable has any value, you should expand it with the name of the directory where the shared Parser Library is installed to:
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:PREFIX/lib
otherwise just define the variable with required value:
$ export LD_LIBARAY_PATH=PREFIX/lib
If you do not use any Bourne-like shell, use the syntax of your shell. You can put this command in your startup script, such as .profile or .cshrc.
Some dynamic linker/loader does not check directories specified in the LD_LIBRARY_PATH variable if you execute you application as root, or it has setuid bit set. It has security reasons. If it causes any problem, you should do something other.
Note, that other systems can behave differently. For example on IRIX and Solaris names of the trusted directories are hardcoded into the dynamic linker/loader and you can not change them. On these systems you can not find ldconfig utility, you simply need to install libraries into any trusted directory (/lib, /usr/lib, and some others) or your own one and set up the LD_LIBRARY_PATH environment variable to contain the name of your directory.
libparser.so.0.64 -> libparser.so.0.64.2
It means that you have version 0.64.2 currently. When you upgrade the library to a new version 0.64.3 you just install the new library and remake the link:
libparser.so.0.64 -> libparser.so.0.64.3
this is done by the installation procedure automatically, so you do not have to do anything else. When major or minor version number of the library is changing, for example you install 0.65.0, it can cause some problems, because linker needs 0.64 and it is no longer exists. In this case the linker can refuse using the new library, because it can not be compatible with the required version. In this case you should relink your application.
If you know that the new version is compatible with the old one and you would not relink your aplpication, you can remake the required link to point to the new library and try to use your application:
libparser.so.0.64 -> libparser.so.0.65.0
It is possible that your linker uses a different procedure when it looks for the required library. For example the IRIX's linker does not check the version number of the library. It means that it needs different links, so the installation step makes some other links too:
libparser.so -> libparser.so.0
libparser.so.0 -> libparser.so.0.64
libparser.so.0.64 -> libparser.so.0.64.3