Skip to content

Shared library is disabled when undefined versions produce errors #960

@alyssais

Description

@alyssais

To check whether shared libraries are supported, the configure script tries to compile a test file. On Linux, GNU, Solaris, and BSD, this test file will be compiled with the version script. On some linkers, this produces an error, because that test file does not produce the symbols expected by the version script:

Checking for shared library support...
=== ztest41.c ===
extern int getchar();
int hello() {return getchar();}
===
x86_64-unknown-freebsd13-clang -c -O3 -fPIC ztest41.c
x86_64-unknown-freebsd13-clang -shared -Wl,-soname,libz.so.1,--version-script,zlib.map -O3 -fPIC -o ztest41.so ztest41.o
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'compressBound' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'deflateBound' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'inflateBack' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'inflateBackEnd' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'inflateBackInit_' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0' to symbol 'inflateCopy' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'deflate_copyright' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'inflate_copyright' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'inflate_fast' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'inflate_table' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'zcalloc' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'zcfree' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'z_errmsg' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'gz_error' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'local' to symbol 'gz_intmax' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0.2' to symbol 'gzclearerr' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0.2' to symbol 'gzungetc' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0.2' to symbol 'zlibCompileFlags' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.0.8' to symbol 'deflatePrime' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: version script assignment of 'ZLIB_1.2.2' to symbol 'adler32_combine' failed: symbol not defined
x86_64-unknown-freebsd13-ld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
(exit code 1)
No shared library support; try without defining CC and CFLAGS

On other linkers, the undefined versions are just warnings, so compilation succeeds and the static library is built.

An easy way to reproduce this error if you don't have a linker that defaults to an error here is to run configure with CC='clang -Wl,--no-undefined-version.

To fix this, the test file probably needs to be compiled without the version script, or with -Wl,--undefined-version or -Wl,--noinhibit-exec.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions