I'm having trouble building and running openmpi-1.6.4 with intel composer 13.1. When building openmpi-1.6.4 it looks for a library called "lintlc.a" which is not in the /opt/intel/composerxe/lib/intel64 directory, which is where composer is installed. To get around this a symbolic link was created libintlc.a -> libirc.a. Now openmpi will build but when I try to link a code with mpif90 I get
LINK Command:
opt/openmpi/bin/mpif90 -o randi2D -O3 -convert big_endian solver_global_vars.o sa_consts.o direct_solvers.o vandermonde.o phys_points.o state_eqn.o transport.o transport_complex.o ns_farfield_conditions.o ns_wall_conditions.o sa_bc.o sa_bc_complex.o sa_bc_jac.o bc.o bc_complex.o bc_jac.o flux_func.o flux_func_complex.o flux_jac.o ns_ind.o ns_ind_complex.o ns_ind_jac.o visc_flux.o visc_flux_complex.o visc_jac.o sa_visc_flux.o sa_visc_flux_complex.o sa_visc_jac.o sa_src.o sa_src_complex.o sa_src_jac.o av_visc_flux.o av_visc_flux_complex.o av_visc_jac.o av_src.o av_src_complex.o av_src_jac.o elem_jac.o soln_utils.o soln_utils_complex.o mpi_setup.o comm_utils.o mpi_exchange.o solver_io.o ams_io.o update_utils.o utils.o soln_alloc.o adj_alloc.o tecplot_sol.o comp_basis_func.o get_mass.o mass_matrix_module.o geo_mod.o dg_mesh_tools.o em_init.o flow_init.o turb_init.o init_module.o force_coeff.o force_coeff_complex.o soln_indicator.o soln_indicator_complex.o soln_indicator_jac.o euler_resid.o euler_resid_complex.o euler_fluxjac.o ns_resid.o ns_resid_complex.o ns_fluxjac.o residual.o residual_complex.o fluxjac.o fluxjac_T.o phys_constraint.o phys_constraint_complex.o setup_utils.o mat_utils.o ns_update.o newton_utils.o jac_utils.o line_solver.o mg_module.o ilu_module.o gmres_module.o time_step.o jacobian_verification.o newton_module.o setup.o fas_module.o fmg_module.o imp_time_scheme.o exp_solve.o exp_time_step.o solver.o obj_module.o adj_solver.o err_est_module.o randi2D.o ../global/*.o -module ../modules -L../METIS -lmetis -L../METIS -lparmetis -DDEBUG_MPI -DDEBUG_COMPLEX
ld: warning: libimf.so, needed by /opt/intel/composerxe/lib/intel64/libifport.so.5, not found (try using -rpath or -rpath-link)
ld: warning: libintlc.so.5, needed by /opt/intel/composerxe/lib/intel64/libifport.so.5, not found (try using -rpath or -rpath-link)
running ldd on libiport.so.5 gives:
ldd libifport.so.5
linux-vdso.so.1 => (0x00007fffb5f2f000)
libimf.so => not found
libm.so.6 => /lib64/libm.so.6 (0x00002b51820a8000)
libintlc.so.5 => not found
libc.so.6 => /lib64/libc.so.6 (0x00002b518232b000)
/lib64/ld-linux-x86-64.so.2 (0x000000303be00000)
How does one fix this? Where are libimf and libintlc.so.5? Why is libiport.so.5 looking for these if they are not there? Do I need to add a flag to my link to link against a different intel fortran library?
Incidentally I get a similar error when trying to link a mixed language code with icpc as icpc -o cpp_mod -O3 -lirc -lifcore test.o test_nomod.o test_nomod_winterface.o cpp_mod.o
ld: warning: libimf.so, needed by /opt/intel/composerxe/lib/intel64/libifcore.so.5, not found (try using -rpath or -rpath-link)
ld: warning: libintlc.so.5, needed by /opt/intel/composerxe/lib/intel64/libifcore.so.5, not found (try using -rpath or -rpath-link)
dd libifcore.so.5
linux-vdso.so.1 => (0x00007fff91bfd000)
libimf.so => not found
libm.so.6 => /lib64/libm.so.6 (0x00002afcad8ff000)
libintlc.so.5 => not found
libc.so.6 => /lib64/libc.so.6 (0x00002afcadb82000)
/lib64/ld-linux-x86-64.so.2 (0x000000303be00000)
Again why is libifcore.so.5 looking for these libraries when they are not present? How do I fix this? Should I link against a different library? These two issues seem too similar not be related?
Compiler versions;
ifort (IFORT) 13.1.1 20130313
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.
icc (ICC) 13.1.1 20130313
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.
icpc (ICC) 13.1.1 20130313
Copyright (C) 1985-2013 Intel Corporation. All rights reserved.