Srv19
Srv19

Reputation: 3618

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.

Upvotes: 2

Views: 1996

Answers (1)

Brecht Sanders
Brecht Sanders

Reputation: 7305

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')

Upvotes: 6

Related Questions