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