I have very much the same problems on Cygwin, with revision 13875.

At 06:43 07/11/11, Lyle Johnson wrote:
>Apologies in advance if this is a FAQ, but I'm trying to build the
>trunk (for Ruby 1.9) on Mac OS X and it's failing to link miniruby:
>
>    /usr/bin/ld: multiple definitions of symbol _dln_find_exe
>    dmydln.o definition of _dln_find_exe in section (__TEXT,__text)
>    dln.o definition of _dln_find_exe in section (__TEXT,__text)
>    ....
>
>I can see that both "dmydln.o" and "dln.o" are in the list of object
>files passed to to the linker. Looking at the code, I think I see what
>the author was going for and can probably work up a patch, but wanted
>to confirm first that I wasn't just doing something wrong while trying
>to build it.

If you can provide a patch, I think that would be great.

The last change to dln.c was at revision 13261.
The last change to dmydln.c was at revision 11708.
So the problem must come from somewhere else than
these files.

Below is the output that I get:

>>>>>>>>
duerst@Tanzawa /cygdrive/d/ruby/trunk
$ make

gcc -g -O2   -L.  -Wl,--stack,0x00200000   main.o dmydln.o array.o bignum.o class.o compar.o convert.o dir.o dln.o encoding.o enum.o enumerator.o error.o eval.o eval_load.o proc.o file.o gc.o hash.o inits.o io.o marshal.o math.o numeric.o object.o pack.o parse.o process.o prec.o random.o range.o re.o regcomp.o regenc.o regerror.o regexec.o regparse.o regsyntax.o ruby.o signal.o sprintf.o st.o string.o struct.o time.o util.o variable.o version.o blockinlining.o compile.o debug.o iseq.o vm.o vm_dump.o thread.o cont.o id.o ascii.o euc_jp.o sjis.o unicode.o utf8.o strftime.o  prelude.o dmyext.o  -lpthread -ldl -lcrypt   -o miniruby.exe
dln.o: In function `dln_load':
/cygdrive/d/ruby/trunk/dln.c:1230: multiple definition of `_dln_load'
dmydln.o:/cygdrive/d/ruby/trunk/dln.c:1230: first defined here
dln.o: In function `dln_find_file':
/cygdrive/d/ruby/trunk/dln.c:1593: multiple definition of `_dln_find_file'
dmydln.o:/cygdrive/d/ruby/trunk/dln.c:1593: first defined here
dln.o: In function `dln_find_exe':
/cygdrive/d/ruby/trunk/dln.c:1576: multiple definition of `_dln_find_exe'
dmydln.o:/cygdrive/d/ruby/trunk/dln.c:1576: first defined here
collect2: ld returned 1 exit status
make: *** [miniruby.exe] Error 1

duerst@Tanzawa /cygdrive/d/ruby/trunk
$
>>>>>>>>



#-#-#  Martin J. Du"rst, Assoc. Professor, Aoyama Gakuin University
#-#-#  http://www.sw.it.aoyama.ac.jp       mailto:duerst / it.aoyama.ac.jp