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

Darius Buntinas buntinas at mcs.anl.gov
Thu Feb 21 17:45:29 CST 2008


When you're just doing the compile step, (i.e., with the -c flag), you 
shouldn't add the libraries (i.e., the -L and -l options).  These are 
needed only when you link (the line that ends in -o ../run/john.exe).

Move the library flags (i.e., -L/cygdrive/c/Progra~1/MPICH2/lib -lmpicxx 
-lfmpich2 -lmpi -finline-functions) to the end of the linking line.

It looks like you may also have to reorder the .o files on that line too 
to get rid of the undefined references to thinks like _mdfivemmx_no.

Remember that order does matter, and that if the file a.o uses symbols 
defined in the file b.o, you have to specify a.o before b.o (yeah, it 
seems counter-intuitive).

You're getting closer :-)

Good luck,
-d

On 02/21/2008 05:05 PM, madfran wrote:
> 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