I had several problems in the linking. After studying several posting, I changed to use icpc for C++ specific linking and that got rid of most of my problems.
The remaining problem is I am build a program. Its normal operation requires dynamic loading of different so based on run-time flags. Therefore -ldl was used at the end of line.
However,. the portion needed from Intel library (libimf and libintlc) is also "linked in" only dynamically. I must have them showing up somewhere in my $LD_LIBRARY_PATH to get the program to launch properly. While there may be internal variations within these two libraries themselves, the different so my main program needs to load have the same needs from the intel libraries. So I hope there is a way I can get these two linked in statically while keeping the rest of the program structure as before. As is obvious from the quoted line, there are several other components were linked in statically. I know -static cannot be used as it conflicts with -ldl. Intuitively -static-intel is the answer, but I am not getting the hoped for effect.
icpc -static-intel -L/local/scratch/chucc/opt/intel/composerxe/lib/intel64 -limf -L/local/scratch/chucc/intel.3/tools/simulator/bin/v5/lnx64 -L../../arch_v5/src/bin/v5/lnx64 -o /local/scratch/chucc/intel.3/tools/simulator/bin/v5/lnx64/../../hexagon-sim /local/scratch/chucc/intel.3/tools/simulator/build/v5/lnx64/src/main.o /local/scratch/chucc/intel.3/tools/simulator/build/v5/lnx64/src/clmain.o /local/scratch/chucc/intel.3/tools/simulator/build/v5/lnx64/src/main_utils.o /local/scratch/chucc/intel.3/tools/simulator/build/v5/lnx64/src/version.o ../libs/utils/bin/lnx64//libutils.a ../libs/utils/bin/lnx64//libelf.a /local/scratch/chucc/intel.3/tools/simulator/bin/lnx64/libwrapper.a -ldl
Great thanks for your help.