On Jun 7, 2007, at 9:04 PM, Code Master wrote:

nction `_int_malloc':
: multiple definition of `_int_malloc'
/usr/lib/libopen-pal.a(lt1-malloc.o)(.text+0x18a0):openmpi-1.2.2/ opal/mca/memory/ptmalloc2/malloc.c:3954: first defined here /usr/bin/ld: Warning: size of symbol `_int_malloc' changed from 1266 in /usr/lib/libopen- pal.a(lt1-malloc.o) to 1333 in /home/ 490_research/490/src/mpi.optimized_profiling//lib/libopen-pal.a(lt1- malloc.o)


so what could go wrong here?

Is it because openmpi has internal implementatios of system- provided functions (such as malloc) that are also used in my program, but the one the client program use is provided by the system whereas the one in the library has a different internal implementation?

In such case, how could I do the static linking in my client program? I really need static linking as far as possible to do the profiling.

Yup, you guessed right. The easiest solution is to compile Open MPI without the memory manager code. This disables some optimizations for InfiniBand (OpenFabrics and MVAPI) and Myrinet/GM, but for other networks has no impact. YOu can disable the memory manager with the --without-memory-manager option to configure.


Hope this helps,

Brian

--
  Brian W. Barrett
  Networking Team, CCS-1
  Los Alamos National Laboratory


Reply via email to