Search code examples
linuxmakefileconfigurealpine-linuxlibjpeg

Libjpeg-9d: ./configure --disable-shared still produce .so files on Linux


I am trying to build jpeg-9d library from sources on Alpine Linux (3.14.2). I would like to obtain only static libraries (.a files) from libjpeg. This is because I would like to get all 3rd party dependencies all-in-one into my application. And this is because I chose Alpine Linux due static musl C library.

The compilation actually was fine, all configure step, make, make install went fine.

./configure --disable-shared
make
make install

But after this I see libjpeg.so file in /usr/local/lib directory. Actually both libjpeg.a and libjpeg.so are present in /usr/local/lib.

install.txt says that using --disable-shared should be enough. But it does not work.

I built many 3rd party libraries into static configuration on Alpine Linux; all of them produced .a files only (of course, I used additional configuration flags), like zlib, bzip2, xz, zstd, libpng, giflib (small patch was required), expat, freetype2, fontconfig, json, openssl, tiff, boost, etc.

Previously I used libjpeg-6b, and instead of using just make install I used

make install-lib

command and I got only .a files. Old jpeg-6b supported install-lib target. But the new libjpeg-9d does not support this target in make files.

I think it is a bug in jpeg-9d configuration scripts. Any chance to work-around it or even fix?


Solution

  • Actually --enable-shared=no works fine, no .so files are copied into /usr/local/lib!

    So, I can use --enable-shared=no instead of --disable-shared.

    ./configure --enable-shared=no
    make
    make install
    

    Maybe it is an issue of automake/autoconf Alpine Linux utilities.