msys2libtool

How to fix libtool: undefined symbols not allowed in x86_64-pc-msys shared


I am trying to build heimdal package for msys2. To my dismay, during linking of the first constituent library, roken, dlls fail to be built, and that causes sort of a chain reaction further on.

The only message i get is:

libtool: undefined symbols not allowed in x86_64-pc-msys shared ... only static will be built

however, there is no information provided on what symbols are undefined. How can i find that out?

If i turn on output of commands wuth make V=1 i get libtool command that links from a large numbert of .lo files. If i try to run gcc over them (copying command from there), it does not recognize them as anything.

I am trying to follow instructions as outlined in msys2 package build script for heimdal.


Solution

  • On Windows building a shared library while allowing undefined symbols is not allowed.

    Try to build with the -Wl,-no-undefined linker flag, for example by adding LDFLAGS="-Wl,-no-undefined" to the ./configure command.

    If that didn't work try this after ./configure and before make:

    sed -i.bak -e "s/\(allow_undefined=\)yes/\1no/" libtool
    

    If you already had a failed build earlier you should also clean up any .la files like this before running make again:

    rm $(find -name '*.la')