[tex-k] Bug (arguably) in tex-file.c

Norman Gray norman at astro.gla.ac.uk
Thu Jun 12 23:45:07 CEST 2003


Olaf, hello.

I think that I've resolved the problem -- thanks to your prompting --
and it's my/OSX's problem rather than kpathsea's.  It's resolved by me
initialising the array in my code, though I worry that this might
cause a problem on other platforms, since the array is then being
defined (ie, not as an extern declaration) in two places.

I've included lengthy discussion below, however, (a) in case others have
the same problem and come across this thread, and (b) because I
wonder if there's something a little unexpected about -fno-common on
OSX.

On 12 Jun 2003, Olaf Weber wrote:

> > With this change, I (or rather, libtool) can successfully build a dynamic
> > library using code from libkpathsea.a.  I don't know if this is the only
> > such symbol, since I don't know if the linker examines and complains
> > about all such global symbols in a library, or just the ones used in a
> > particular link.
> 
> Unix linkers in general handle cases like this gracefully, so there's
> no (automatic) way to determine whether similar problems exist with
> other symbols.

Makes sense, and not surprising.

> Traditionally, adding an initializer like this will
> move the symbol from the zero-initialized .bss segment to the
> explicitly-initialzed .data segment, making the library image somewhat
> larger.  (Not much of a problem in this case, but it is the reason why
> this kind of thing tends to be deliberate.)

Riiiight.  While this broadly makes sense to me, it's very much the
sort of headache-inducing detail that makes libtool a Very Good Thing
Indeed.

> The other people I know of who work with OSX haven't reported anything
> like this, but may not have attempted shared libraries either.  On the
> other hand, I do see that libtool passes (should pass) the -fno-common
> flag on OSX, which should be an alternative fix for this problem.  Can
> you verify whether this flag is indeed passed?

libtool (version 1.5 in this case) does indeed pass the -fno-common flag.

I've attached the results of a full build of my library against the
patched libkpathsea (which works); and the results of rebuilding and
installing kpathsea without the patch, deleting my lib*, and remaking.
This latter fails with

    ld: common symbols not allowed with MH_DYLIB output format

when it tries to build the shared library.

In case it's significant, the precise documentation of the -fno-common
flag is 

    -fno-common In C, allocate even uninitialized global variables in the
        data section of the object file, rather than generating them
        as common blocks.  This has the effect that if the same variable
        is declared (without "extern") in two different compilations,
        you will get an error when you link them.  The only reason this
        might be useful is if you wish to verify that the program will
        work on other systems which always work this way.

(I include this because the g++ on OSX has some Apple-specific features
which may not have been folded back into the main gcc3 distribution,
so there is an outside chance, I suppose, that the problem lies
there.)

This does rather suggest to me that the -fno-common flag should indeed
make this problem go away, but I'm surely missing a subtlety (isn't
libtool Good!).

The notes at
<http://developer.apple.com/techpubs/macosx/DeveloperTools/MachORuntime/2rt_mach-o_overview/chapter_2_section_3.html#163040>
talk of `common symbol' -- which is the point at issue here, and says

    A _common symbol_ is a symbol that may appear in multiple intermediate
    object files. The static linker permits multiple common symbol
    definitions with the same name in input files, and copies the one
    with the largest size to the final product. If there is an another
    symbol with the same name as a common symbol, the static linker will
    ignore the common symbol instead.

    The standard C compiler generates a common symbol when it sees a
    tentative definition -- a global variable that has no initializer
    and is not marked extern. The following line is an example of a
    tentative definition:

        int x;

    A shared library cannot have common symbols. To eliminate common
    symbols in an existing shared library, you must either explicitly
    define the symbol (with an initialized value, for example) in one
    of the modules of the shared library, or pass the -fno-common flag
    to the compiler.

That again seems to suggest that -fno-common should do the right
thing, but it doesn't, even if, superstitiously, I force -fno-common
into the linker command that libtool generates.

As I mentioned at the top, I realised eventually that I could handle
this by defining and initialising kpse_format_info in _my_ code.  That
works on OSX (linking against the unpatched web2c-7.4.5) but, since
there are now two non-extern definitions of kpse_format_info, I wonder
if I'll get the linker screaming at me the next time I build this on
another platform.  So..., if that happens, I'll conditionalise the
initialisation in a suitably clever fashion.

So, there is no bug in kpathsea as far as I'm concerned.  I hope I
haven't wasted too much of anyone else's time with this; apologies if
so.

All the best,

Norman


-- 
---------------------------------------------------------------------------
Norman Gray                        http://www.astro.gla.ac.uk/users/norman/
Physics and Astronomy, University of Glasgow, UK     norman at astro.gla.ac.uk
-------------- next part --------------
cd . && echo autoheader ignored
autoheader ignored
touch ./config.h.in
cd . && /bin/sh ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make  all-am
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT Bitmap.lo -MD -MP -MF ".deps/Bitmap.Tpo" \
  -c -o Bitmap.lo `test -f 'Bitmap.cc' || echo './'`Bitmap.cc; \
then mv -f ".deps/Bitmap.Tpo" ".deps/Bitmap.Plo"; \
else rm -f ".deps/Bitmap.Tpo"; exit 1; \
fi
mkdir .libs
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT Bitmap.lo -MD -MP -MF .deps/Bitmap.Tpo -c Bitmap.cc  -fno-common -DPIC -o .libs/Bitmap.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT Bitmap.lo -MD -MP -MF .deps/Bitmap.Tpo -c Bitmap.cc -o Bitmap.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT BitmapImage.lo -MD -MP -MF ".deps/BitmapImage.Tpo" \
  -c -o BitmapImage.lo `test -f 'BitmapImage.cc' || echo './'`BitmapImage.cc; \
then mv -f ".deps/BitmapImage.Tpo" ".deps/BitmapImage.Plo"; \
else rm -f ".deps/BitmapImage.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT BitmapImage.lo -MD -MP -MF .deps/BitmapImage.Tpo -c BitmapImage.cc  -fno-common -DPIC -o .libs/BitmapImage.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT BitmapImage.lo -MD -MP -MF .deps/BitmapImage.Tpo -c BitmapImage.cc -o BitmapImage.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT DviError.lo -MD -MP -MF ".deps/DviError.Tpo" \
  -c -o DviError.lo `test -f 'DviError.cc' || echo './'`DviError.cc; \
then mv -f ".deps/DviError.Tpo" ".deps/DviError.Plo"; \
else rm -f ".deps/DviError.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT DviError.lo -MD -MP -MF .deps/DviError.Tpo -c DviError.cc  -fno-common -DPIC -o .libs/DviError.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT DviError.lo -MD -MP -MF .deps/DviError.Tpo -c DviError.cc -o DviError.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT DviFile.lo -MD -MP -MF ".deps/DviFile.Tpo" \
  -c -o DviFile.lo `test -f 'DviFile.cc' || echo './'`DviFile.cc; \
then mv -f ".deps/DviFile.Tpo" ".deps/DviFile.Plo"; \
else rm -f ".deps/DviFile.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT DviFile.lo -MD -MP -MF .deps/DviFile.Tpo -c DviFile.cc  -fno-common -DPIC -o .libs/DviFile.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT DviFile.lo -MD -MP -MF .deps/DviFile.Tpo -c DviFile.cc -o DviFile.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT GIFBitmap.lo -MD -MP -MF ".deps/GIFBitmap.Tpo" \
  -c -o GIFBitmap.lo `test -f 'GIFBitmap.cc' || echo './'`GIFBitmap.cc; \
then mv -f ".deps/GIFBitmap.Tpo" ".deps/GIFBitmap.Plo"; \
else rm -f ".deps/GIFBitmap.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT GIFBitmap.lo -MD -MP -MF .deps/GIFBitmap.Tpo -c GIFBitmap.cc  -fno-common -DPIC -o .libs/GIFBitmap.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT GIFBitmap.lo -MD -MP -MF .deps/GIFBitmap.Tpo -c GIFBitmap.cc -o GIFBitmap.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT InputByteStream.lo -MD -MP -MF ".deps/InputByteStream.Tpo" \
  -c -o InputByteStream.lo `test -f 'InputByteStream.cc' || echo './'`InputByteStream.cc; \
then mv -f ".deps/InputByteStream.Tpo" ".deps/InputByteStream.Plo"; \
else rm -f ".deps/InputByteStream.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT InputByteStream.lo -MD -MP -MF .deps/InputByteStream.Tpo -c InputByteStream.cc  -fno-common -DPIC -o .libs/InputByteStream.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT InputByteStream.lo -MD -MP -MF .deps/InputByteStream.Tpo -c InputByteStream.cc -o InputByteStream.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT PageRange.lo -MD -MP -MF ".deps/PageRange.Tpo" \
  -c -o PageRange.lo `test -f 'PageRange.cc' || echo './'`PageRange.cc; \
then mv -f ".deps/PageRange.Tpo" ".deps/PageRange.Plo"; \
else rm -f ".deps/PageRange.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PageRange.lo -MD -MP -MF .deps/PageRange.Tpo -c PageRange.cc  -fno-common -DPIC -o .libs/PageRange.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PageRange.lo -MD -MP -MF .deps/PageRange.Tpo -c PageRange.cc -o PageRange.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT PNGBitmap.lo -MD -MP -MF ".deps/PNGBitmap.Tpo" \
  -c -o PNGBitmap.lo `test -f 'PNGBitmap.cc' || echo './'`PNGBitmap.cc; \
then mv -f ".deps/PNGBitmap.Tpo" ".deps/PNGBitmap.Plo"; \
else rm -f ".deps/PNGBitmap.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PNGBitmap.lo -MD -MP -MF .deps/PNGBitmap.Tpo -c PNGBitmap.cc  -fno-common -DPIC -o .libs/PNGBitmap.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PNGBitmap.lo -MD -MP -MF .deps/PNGBitmap.Tpo -c PNGBitmap.cc -o PNGBitmap.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT PkFont.lo -MD -MP -MF ".deps/PkFont.Tpo" \
  -c -o PkFont.lo `test -f 'PkFont.cc' || echo './'`PkFont.cc; \
then mv -f ".deps/PkFont.Tpo" ".deps/PkFont.Plo"; \
else rm -f ".deps/PkFont.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PkFont.lo -MD -MP -MF .deps/PkFont.Tpo -c PkFont.cc  -fno-common -DPIC -o .libs/PkFont.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT PkFont.lo -MD -MP -MF .deps/PkFont.Tpo -c PkFont.cc -o PkFont.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT Util.lo -MD -MP -MF ".deps/Util.Tpo" \
  -c -o Util.lo `test -f 'Util.cc' || echo './'`Util.cc; \
then mv -f ".deps/Util.Tpo" ".deps/Util.Plo"; \
else rm -f ".deps/Util.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT Util.lo -MD -MP -MF .deps/Util.Tpo -c Util.cc  -fno-common -DPIC -o .libs/Util.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT Util.lo -MD -MP -MF .deps/Util.Tpo -c Util.cc -o Util.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT XBMBitmap.lo -MD -MP -MF ".deps/XBMBitmap.Tpo" \
  -c -o XBMBitmap.lo `test -f 'XBMBitmap.cc' || echo './'`XBMBitmap.cc; \
then mv -f ".deps/XBMBitmap.Tpo" ".deps/XBMBitmap.Plo"; \
else rm -f ".deps/XBMBitmap.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT XBMBitmap.lo -MD -MP -MF .deps/XBMBitmap.Tpo -c XBMBitmap.cc  -fno-common -DPIC -o .libs/XBMBitmap.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT XBMBitmap.lo -MD -MP -MF .deps/XBMBitmap.Tpo -c XBMBitmap.cc -o XBMBitmap.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT XPMBitmap.lo -MD -MP -MF ".deps/XPMBitmap.Tpo" \
  -c -o XPMBitmap.lo `test -f 'XPMBitmap.cc' || echo './'`XPMBitmap.cc; \
then mv -f ".deps/XPMBitmap.Tpo" ".deps/XPMBitmap.Plo"; \
else rm -f ".deps/XPMBitmap.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT XPMBitmap.lo -MD -MP -MF .deps/XPMBitmap.Tpo -c XPMBitmap.cc  -fno-common -DPIC -o .libs/XPMBitmap.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT XPMBitmap.lo -MD -MP -MF .deps/XPMBitmap.Tpo -c XPMBitmap.cc -o XPMBitmap.o >/dev/null 2>&1
if /bin/sh ./libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT kpathsea.lo -MD -MP -MF ".deps/kpathsea.Tpo" \
  -c -o kpathsea.lo `test -f 'kpathsea.cc' || echo './'`kpathsea.cc; \
then mv -f ".deps/kpathsea.Tpo" ".deps/kpathsea.Plo"; \
else rm -f ".deps/kpathsea.Tpo"; exit 1; \
fi
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT kpathsea.lo -MD -MP -MF .deps/kpathsea.Tpo -c kpathsea.cc  -fno-common -DPIC -o .libs/kpathsea.o
 g++ -DHAVE_CONFIG_H -I. -I. -I. -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include -g -O2 -MT kpathsea.lo -MD -MP -MF .deps/kpathsea.Tpo -c kpathsea.cc -o kpathsea.o >/dev/null 2>&1
/bin/sh ./libtool --mode=link g++  -g -O2   -o libdvi2bitmap.la -rpath /usr/local/lib  Bitmap.lo BitmapImage.lo DviError.lo DviFile.lo GIFBitmap.lo InputByteStream.lo PageRange.lo PNGBitmap.lo PkFont.lo Util.lo XBMBitmap.lo XPMBitmap.lo kpathsea.lo  -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz
g++ -r -Wl,-bind_at_load -keep_private_externs -nostdlib -o .libs/libdvi2bitmap.0.0.0.dylib-master.o  .libs/Bitmap.o .libs/BitmapImage.o .libs/DviError.o .libs/DviFile.o .libs/GIFBitmap.o .libs/InputByteStream.o .libs/PageRange.o .libs/PNGBitmap.o .libs/PkFont.o .libs/Util.o .libs/XBMBitmap.o .libs/XPMBitmap.o .libs/kpathsea.o
g++ -dynamiclib -flat_namespace -undefined suppress -o .libs/libdvi2bitmap.0.0.0.dylib .libs/libdvi2bitmap.0.0.0.dylib-master.o  -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz  -install_name  /usr/local/lib/libdvi2bitmap.0.dylib -compatibility_version 1 -current_version 1.0
(cd .libs && rm -f libdvi2bitmap.0.dylib && ln -s libdvi2bitmap.0.0.0.dylib libdvi2bitmap.0.dylib)
(cd .libs && rm -f libdvi2bitmap.dylib && ln -s libdvi2bitmap.0.0.0.dylib libdvi2bitmap.dylib)
ar cru .libs/libdvi2bitmap.a  Bitmap.o BitmapImage.o DviError.o DviFile.o GIFBitmap.o InputByteStream.o PageRange.o PNGBitmap.o PkFont.o Util.o XBMBitmap.o XPMBitmap.o kpathsea.o
ranlib .libs/libdvi2bitmap.a
creating libdvi2bitmap.la
(cd .libs && rm -f libdvi2bitmap.la && ln -s ../libdvi2bitmap.la libdvi2bitmap.la)
if g++ -DHAVE_CONFIG_H -I. -I. -I.   -I/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/include  -g -O2 -MT dvi2bitmap.o -MD -MP -MF ".deps/dvi2bitmap.Tpo" \
  -c -o dvi2bitmap.o `test -f 'dvi2bitmap.cc' || echo './'`dvi2bitmap.cc; \
then mv -f ".deps/dvi2bitmap.Tpo" ".deps/dvi2bitmap.Po"; \
else rm -f ".deps/dvi2bitmap.Tpo"; exit 1; \
fi
/bin/sh ./libtool --mode=link g++  -g -O2   -o dvi2bitmap  dvi2bitmap.o libdvi2bitmap.la -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz
g++ -g -O2 -o .libs/dvi2bitmap dvi2bitmap.o -Wl,-bind_at_load  ./.libs/libdvi2bitmap.dylib -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz
creating dvi2bitmap
-------------- next part --------------
make  all-am
/bin/sh ./libtool --mode=link g++  -g -O2   -o libdvi2bitmap.la -rpath /usr/local/lib  Bitmap.lo BitmapImage.lo DviError.lo DviFile.lo GIFBitmap.lo InputByteStream.lo PageRange.lo PNGBitmap.lo PkFont.lo Util.lo XBMBitmap.lo XPMBitmap.lo kpathsea.lo  -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz
g++ -r -Wl,-bind_at_load -keep_private_externs -nostdlib -o .libs/libdvi2bitmap.0.0.0.dylib-master.o  .libs/Bitmap.o .libs/BitmapImage.o .libs/DviError.o .libs/DviFile.o .libs/GIFBitmap.o .libs/InputByteStream.o .libs/PageRange.o .libs/PNGBitmap.o .libs/PkFont.o .libs/Util.o .libs/XBMBitmap.o .libs/XPMBitmap.o .libs/kpathsea.o
g++ -dynamiclib -flat_namespace -undefined suppress -o .libs/libdvi2bitmap.0.0.0.dylib .libs/libdvi2bitmap.0.0.0.dylib-master.o  -L/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib -lkpathsea -lpng -lz  -install_name  /usr/local/lib/libdvi2bitmap.0.dylib -compatibility_version 1 -current_version 1.0
ld: common symbols not allowed with MH_DYLIB output format
/Volumes/Maxwell/data/norman/tools/web2c-7.4.5/lib/libkpathsea.a(tex-file.o) definition of common _kpse_format_info (size 2992)
/usr/bin/libtool: internal link edit command failed
make[1]: *** [libdvi2bitmap.la] Error 1
make: *** [all] Error 2


More information about the tex-k mailing list