[MPICH] Compiling a program (john-mpi MPICH2) under cygwin / WinXP - specify libs after source file

Jayesh Krishna jayesh at mcs.anl.gov
Thu Feb 21 17:25:01 CST 2008


Hi,
 I think the problem that you are having is due to improper ordering of the
compiler arguments.
 Please try compiling a simple MPI hello world program (given below)
following the instructions below,

1) MPI program (Copy-paste the code below)
   ---------------

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[]){
	int rank;
	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
	printf("[%d] Hello world\n", rank);
	MPI_Finalize();
}


2) Compile using the following command (Copy-paste the command below),

gcc -I/cygdrive/c/Progra~1/MPICH2/include -L/cygdrive/c/Progra~1/MPICH2/lib
world.c -lmpi

3) Run your program using the following command (Cygwin gcc defaults the
executable name to a.exe),

mpiexec -n 2 -localroot a.exe

4) If the above steps work, you can modify the compilation of your program
accordingly.

 Hope this helps...

Regards,
Jayesh

-----Original Message-----
From: madfran [mailto:madfran at set-ezine.org] 
Sent: Thursday, February 21, 2008 5:06 PM
To: Jayesh Krishna
Cc: mpich-discuss at mcs.anl.gov
Subject: RE: [MPICH] Compiling a program (john-mpi MPICH2) under cygwin /
WinXP - specify libs after source file

I begin to think it is imposible :-(

*********************************************************************
........................
........................
gcc DES_bs_b.c -c -Wall -O3 -fomit-frame-pointer -
I/cygdrive/c/Progra~1/MPICH2/include -L/cygdrive/c/Progra~1/MPICH2/lib -
lmpicxx -lfmpich2 -lmpi -finline-functions
gcc: -lmpicxx: linker input file unused because linking not done
gcc: -lfmpich2: linker input file unused because linking not done
gcc: -lmpi: linker input file unused because linking not done gcc x86.o
x86-mmx.o  md4-sse2.o NTmmx_fmt.o md5-mmx.o sha1-mmx.o DES_fmt.o DES_std.o
DES_bs.o BSDI_fmt.o MD5_fmt.o MD5_std.o BF_fmt.o BF_std.o AFS_fmt.o LM_fmt.o
des.o MD5_apache_fmt.o BFEgg_fmt.o lotus5_fmt.o md5.o NSLDAP_fmt.o
NSLDAPS_fmt.o sha1.o base64.o MYSQL_fmt.o NT_fmt.o md4.o smbencrypt.o
rawMD5_fmt.o rawSHA1_ fmt.o mssql_fmt.o hmacMD5_fmt.o WPAPSK_fmt.o
mscash_fmt.o oracle_fmt.o batch.o bench.o charset.o common.o compiler.o
config.o cracker.o crc32.o external.o formats.o getopt.o idle.o inc.o john.o
list.o loader.o logger.o math.o memory.o misc.o options.o params.o path.o
recovery.o rpp.o rules.o signals.o single.o status.o tty.o wordlist.o
unshadow.o ryan.o unafs.o undrop.o unique.o DES_bs_b.o -lkernel32 -o
../run/john.exe
hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6c3): undefined reference to
`_mdfivemmx_no sizeupdate'
hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6db): undefined reference to
`_mdfivemmx_no init_uniformsizeupdate'
hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6ef): undefined reference to
`_mdfivemmx_no sizeupdate'
hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x703): undefined reference to
`_mdfivemmx_no init_uniformsizeupdate'
bench.o:bench.c:(.text+0x849): undefined reference to `_MPI_Reduce'
bench.o:bench.c:(.text+0x91f): undefined reference to `_MPI_Reduce'
bench.o:bench.c:(.text+0x9f2): undefined reference to `_MPI_Reduce'
bench.o:bench.c:(.text+0xab0): undefined reference to `_MPI_Reduce'
john.o:john.c:(.text+0x33): undefined reference to `_MPI_Init'
john.o:john.c:(.text+0x43): undefined reference to `_MPI_Comm_rank'
john.o:john.c:(.text+0x53): undefined reference to `_MPI_Comm_size'
john.o:john.c:(.text+0x6e3): undefined reference to `_MPI_Finalize'
john.o:john.c:(.text+0x721): undefined reference to `_MPI_Finalize'
john.o:john.c:(.text+0x741): undefined reference to `_MPI_Finalize'
john.o:john.c:(.text+0x8f1): undefined reference to `_MPI_Finalize'
john.o:john.c:(.text+0xa92): undefined reference to `_MPI_Finalize'
misc.o:misc.c:(.text+0x38): more undefined references to `_MPI_Finalize' 
follow
collect2: ld returned 1 exit status
make[1]: *** [../run/john.exe] Error 1
make[1]: Leaving directory `/tmp/john-mpi/john-1.7.2-bp17-mpi6/src'
make: *** [win32-cygwin-x86-sse2] Error 2


On Thu, 21 Feb 2008 12:51:30 -0600, Jayesh Krishna wrote
> Hi,
>  Please specify the libraries after the source file.
> 
> ========================================
> gcc -Wall -O3 -fomit-frame-pointer 
> -I/cygdrive/c/Progra~1/MPICH2/include
> -L/cygdrive/c/Progra~1/MPICH2/lib -funroll-loops NTmmx_fmt.c -lmpicxx
> -lfmpich2 -lmpi
> ========================================
> 
> Regards,
> Jayesh
> -----Original Message-----
> From: madfran [mailto:madfran at set-ezine.org]
> Sent: Thursday, February 21, 2008 12:02 PM
> To: Jayesh Krishna
> Cc: mpich-discuss at mcs.anl.gov
> Subject: RE: [MPICH] Compiling a program (john-mpi MPICH2) under 
> cygwin / WinXP - use -lmpicxx
> 
> Hi,...
> 
> Not luck :-(
> 
> *****************************************************************
> ................................................
> gcc -c -Wall -O3 -fomit-frame-pointer 
> -I/cygdrive/c/Progra~1/MPICH2/include
> - L/cygdrive/c/Progra~1/MPICH2/lib -lmpicxx -lfmpich2 -lmpi -funroll- 
> loops NTmmx_fmt.c NTmmx_fmt.c:63: warning: alignment of 'saved_plain' 
> is greater than maximum object file alignment.  Using
> 16 NTmmx_fmt.c:65: warning: alignment of 'output' is greater than 
> maximum object file alignment.  Using 16
> gcc: -lmpicxx: linker input file unused because linking not done
> gcc: -lfmpich2: linker input file unused because linking not done
> gcc: -lmpi: linker input file unused because linking not done gcc -c 
> -DUNDERSCORES md5-mmx.S gcc -c  -DUNDERSCORES sha1-mmx.S gcc DES_fmt.o 
> DES_std.o DES_bs.o BSDI_fmt.o MD5_fmt.o MD5_std.o BF_fmt.o BF_std. o 
> AFS_fmt.o LM_fmt.o des.o MD5_apache_fmt.o BFEgg_fmt.o lotus5_fmt.o 
> md5.o NSLDA P_fmt.o NSLDAPS_fmt.o sha1.o base64.o MYSQL_fmt.o NT_fmt.o 
> md4.o smbencrypt.o ra wMD5_fmt.o rawSHA1_fmt.o mssql_fmt.o 
> hmacMD5_fmt.o WPAPSK_fmt.o mscash_fmt.o ora cle_fmt.o batch.o bench.o 
> charset.o common.o compiler.o config.o cracker.o
> crc32 .o external.o formats.o getopt.o idle.o inc.o john.o list.o 
> loader.o logger.o ma th.o memory.o misc.o options.o params.o path.o 
> recovery.o rpp.o rules.o signals. o single.o status.o tty.o wordlist.o 
> unshadow.o ryan.o unafs.o undrop.o unique.o  DES_bs_b.o x86.o 
> x86-mmx.o  md4-sse2.o NTmmx_fmt.o md5-mmx.o sha1-mmx.o - lkerne l32 -o 
> ../run/john.exe
> hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6c3): undefined reference to 
> `_mdfivemmx_no sizeupdate' hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6db)
> : undefined reference to `_mdfivemmx_no init_uniformsizeupdate' 
> hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6ef): undefined reference to 
> `_mdfivemmx_no sizeupdate' hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x703)
> : undefined reference to `_mdfivemmx_no init_uniformsizeupdate' 
> bench.o:bench.c:(.text+0x849): undefined reference to `_MPI_Reduce' 
> bench.o:bench.c:(.text+0x91f): undefined reference to `_MPI_Reduce' 
> bench.o:bench.c:(.text+0x9f2): undefined reference to `_MPI_Reduce' 
> bench.o:bench.c:(.text+0xab0): undefined reference to `_MPI_Reduce' 
> john.o:john.c:(.text+0x33): undefined reference to `_MPI_Init' 
> john.o:john.c:(.text+0x43): undefined reference to `_MPI_Comm_rank' 
> john.o:john.c:(.text+0x53): undefined reference to `_MPI_Comm_size' 
> john.o:john.c:(.text+0x6e3): undefined reference to `_MPI_Finalize' 
> john.o:john.c:(.text+0x721): undefined reference to `_MPI_Finalize' 
> john.o:john.c:(.text+0x741): undefined reference to `_MPI_Finalize' 
> john.o:john.c:(.text+0x8f1): undefined reference to `_MPI_Finalize' 
> john.o:john.c:(.text+0xa92): undefined reference to `_MPI_Finalize' 
> misc.o:misc.c:(.text+0x38): more undefined references to 
> `_MPI_Finalize' follow collect2: ld returned 1 exit status make[1]:
> *** [../run/john.exe] Error 1 make[1]: Leaving directory `/tmp/john- 
> mpi/john-1.7.2-bp17-mpi6/src' make: *** [win32-cygwin-x86-sse2] Error 
> 2
> 
> On Wed, 20 Feb 2008 15:24:18 -0600, Jayesh Krishna wrote
> > Hi,
> >  Try,
> > 
> > gcc -c ... -lmpicxx -lfmpich2 -lmpi ...
> > 
> > (Note: I used "-lmpicxx" instead of "-llibmpicxx" )
> > 
> > Regards,
> > Jayesh
> > 
> > -----Original Message-----
> > From: madfran [mailto:madfran at set-ezine.org]
> > Sent: Wednesday, February 20, 2008 3:16 PM
> > To: Jayesh Krishna
> > Cc: mpich-discuss at mcs.anl.gov
> > Subject: RE: [MPICH] Compiling a program (john-mpi MPICH2) under 
> > cygwin / WinXP - use libmpicxx.a
> > 
> > Hi,...
> > 
> > The problem is not solved.
> > 
> > ***************************
> > .............
> > gcc -c -Wall -O3 -fomit-frame-pointer 
> > -I/cygdrive/c/Progra~1/MPICH2/include
> > - L/cygdrive/c/Progra~1/MPICH2/lib -llibmpicxx -lmpi -lfmpich2 
> > -funroll-loops NTmmx _fmt.c
> > NTmmx_fmt.c:63: warning: alignment of 'saved_plain' is greater than 
> > maximum object file alignment.  Using 16
> > NTmmx_fmt.c:65: warning: alignment of 'output' is greater than 
> > maximum object file alignment.  Using 16 gcc: -llibmpicxx: linker 
> > input file unused because linking not done gcc: -lmpi: linker input 
> > file unused because linking not done gcc: -lfmpich2: linker input 
> > file unused because linking not done ...........
> > bench.o:bench.c:(.text+0x849): undefined reference to
> `_MPI_Reduce' ...........
> > **************************
> > 
> > On Tue, 19 Feb 2008 16:39:52 -0600, Jayesh Krishna wrote
> > > Hi,
> > >   If you want to compile MPI programs written in C++ from cygwin 
> > > use the libmpicxx.a library (not cxx.lib) in MPICH2\lib.
> > > 
> > > Regards,
> > > Jayesh
> > > 
> > > -----Original Message-----
> > > From: owner-mpich-discuss at mcs.anl.gov 
> > > [mailto:owner-mpich-discuss at mcs.anl.gov] On Behalf Of madfran
> > > Sent: Tuesday, February 19, 2008 4:09 PM
> > > To: mpich-discuss at mcs.anl.gov
> > > Subject: [MPICH] Compiling a program (john-mpi MPICH2) under 
> > > cygwin / WinXP
> > > 
> > > Hi,...
> > > 
> > > Trying to build a program under cygwin / WinXP I had received 
> > > these messages.
> > > MPICH2 is installed only under WinXP.
> > > 
> > > Any idea?
> > > 
> > > ************************************************************
> > > .....
> > > gcc -c -Wall -O3 -fomit-frame-pointer 
> > > -I/cygdrive/c/Progra~1/MPICH2/include
> > > - L/c
> > > ygdrive/c/Progra~1/MPICH2/lib -lcxx.lib -lmpi -lfmpich2 -funroll-
> > > loops   NTmmx_f mt.c NTmmx_fmt.c:63: warning: alignment of 
> > > 'saved_plain' is greater than maximum obje ct file alignment.  
> > > Using
> > > 16 NTmmx_fmt.c:65: warning: alignment of 'output' is greater than 
> > > maximum object fi le alignment.  Using 16
> > > gcc: -lcxx.lib: linker input file unused because linking not done
> > > gcc: -lmpi: linker input file unused because linking not done
> > > gcc: -lfmpich2: linker input file unused because linking not done 
> > > gcc -c -DUNDERSCORES md5-mmx.S gcc -c  -DUNDERSCORES sha1-mmx.S 
> > > gcc
> > DES_fmt.o
> > > DES_std.o DES_bs.o BSDI_fmt.o MD5_fmt.o MD5_std.o BF_fmt.o BF_std.
> > > o AFS_fmt.o LM_fmt.o des.o MD5_apache_fmt.o BFEgg_fmt.o 
> > > lotus5_fmt.o md5.o NSLDA P_fmt.o NSLDAPS_fmt.o sha1.o base64.o 
> > > MYSQL_fmt.o NT_fmt.o md4.o smbencrypt.o ra wMD5_fmt.o 
> > > rawSHA1_fmt.o mssql_fmt.o
> > hmacMD5_fmt.o
> > > WPAPSK_fmt.o mscash_fmt.o ora cle_fmt.o batch.o bench.o charset.o 
> > > common.o compiler.o config.o cracker.o
> > > crc32
> > > .o external.o formats.o getopt.o idle.o inc.o john.o list.o 
> > > loader.o logger.o ma th.o memory.o misc.o options.o params.o 
> > > path.o recovery.o rpp.o rules.o signals. o single.o status.o tty.o 
> > > wordlist.o unshadow.o ryan.o unafs.o undrop.o unique.o  DES_bs_b.o 
> > > x86.o x86-mmx.o md4-sse2.o NTmmx_fmt.o md5-mmx.o sha1-mmx.o - 
> > > lkerne
> > > l32 -o ../run/john.exe
> > > hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6c3): undefined reference to 
> > > `_mdfivemmx_no sizeupdate' 
> > > hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6db)
> > > : undefined reference to `_mdfivemmx_no init_uniformsizeupdate' 
> > > hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x6ef): undefined reference to 
> > > `_mdfivemmx_no sizeupdate' 
> > > hmacMD5_fmt.o:hmacMD5_fmt.c:(.text+0x703)
> > > : undefined reference to `_mdfivemmx_no init_uniformsizeupdate' 
> > > bench.o:bench.c:(.text+0x849): undefined reference to `_MPI_Reduce' 
> > > bench.o:bench.c:(.text+0x91f): undefined reference to `_MPI_Reduce' 
> > > bench.o:bench.c:(.text+0x9f2): undefined reference to `_MPI_Reduce' 
> > > bench.o:bench.c:(.text+0xab0): undefined reference to `_MPI_Reduce' 
> > > john.o:john.c:(.text+0x33): undefined reference to `_MPI_Init' 
> > > john.o:john.c:(.text+0x43): undefined reference to `_MPI_Comm_rank' 
> > > john.o:john.c:(.text+0x53): undefined reference to `_MPI_Comm_size' 
> > > john.o:john.c:(.text+0x6e3): undefined reference to `_MPI_Finalize' 
> > > john.o:john.c:(.text+0x721): undefined reference to `_MPI_Finalize' 
> > > john.o:john.c:(.text+0x741): undefined reference to `_MPI_Finalize' 
> > > john.o:john.c:(.text+0x8f1): undefined reference to `_MPI_Finalize' 
> > > john.o:john.c:(.text+0xa92): undefined reference to `_MPI_Finalize' 
> > > misc.o:misc.c:(.text+0x38): more undefined references to 
> > > `_MPI_Finalize' follow collect2: ld returned 1 exit status make[1]:
> > > *** [../run/john.exe] Error 1 make[1]: Leaving directory 
> > > `/tmp/john- mpi/john-1.7.2-bp17-mpi6/src' make: *** 
> > > [win32-cygwin-x86-sse2] Error
> > > 2





More information about the mpich-discuss mailing list