Public bug reported: 1) Summary:
ZSTD static library (libzstd.a) provided in 1.5.5+dfsg2-2build1.1 is not position-independent. So, linking this library to a shared library fails. 2) Package Info: $ apt-cache policy libzstd-dev libzstd-dev: Installed: 1.5.5+dfsg2-2build1.1 Candidate: 1.5.5+dfsg2-2build1.1 Version table: *** 1.5.5+dfsg2-2build1.1 500 500 http://linux-ftp.jf.intel.com/pub/mirrors/ubuntu noble-updates/main amd64 Packages 500 http://linux-ftp.fi.intel.com/pub/mirrors/ubuntu noble-updates/main amd64 Packages 100 /var/lib/dpkg/status 1.5.5+dfsg2-2build1 500 500 http://linux-ftp.jf.intel.com/pub/mirrors/ubuntu noble/main amd64 Packages 500 http://linux-ftp.fi.intel.com/pub/mirrors/ubuntu noble/main amd64 Packages 3) Operating System Info: $ lsb_release -rd No LSB modules are available. Description: Ubuntu 24.04 LTS Release: 24.04 4) What you expected to happen: static library should be built with "-fPIC" flag. Conan, for example, distribute zstd with `-fPIC` flag (https://github.com/conan-io/conan-center-index/blob/master/recipes/zstd/all/conanfile.py#L27). 5) What happened instead: Consider the following reproducer: ------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #include <zstd.h> int main(int argc, const char** argv) { char stringToCompress[] = "String to be compressed"; int len = strlen(stringToCompress); int bound = ZSTD_compressBound(len); char* dstBuff = (char*)malloc(bound); int compressedSize = ZSTD_compress(dstBuff, bound, stringToCompress, len, 1); printf("Size of original buffer: %d\n", len); printf("Size of compressed buffer: %d\n", compressedSize); free(dstBuff); return 0; } -------------------------------- Try compiling this as a shared library by linking static zstd: $ clang -fPIC -shared <reproducer> /usr/lib/x86_64-linux-gnu/libzstd.a /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libzstd.a(zstd_compress.o): warning: relocation against `ZSTD_copySequencesToSeqStoreNoBlockDelim' in read-only section `.text' /usr/bin/ld: /usr/lib/x86_64-linux-gnu/libzstd.a(zstd_compress.o): relocation R_X86_64_PC32 against symbol `ZSTD_copySequencesToSeqStoreExplicitBlockDelim' can not be used when making a shared object; recompile with -fPIC /usr/bin/ld: final link failed: bad value clang: error: linker command failed with exit code 1 (use -v to see invocation) ** Affects: libzstd (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2086543 Title: libzstd.a not built with -fPIC flag To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/libzstd/+bug/2086543/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs