Exiv2 / exiv2

Image metadata library and tools
http://www.exiv2.org/
Other
885 stars 279 forks source link

Added compiler option -fPIC. Required for clang+static linking with libexiv2 #2970

Open bertwim opened 1 month ago

bertwim commented 1 month ago

When using clang++ (18.0.0, 19.0.0) I cannot not link my application against the static exiv2 library libexiv2.a. The linker complaines about missing a -fPIC (or -fPIE) flag. Adding this flag solves the issue.

This linking error does not occur when g++ is used. It also does not occur when the .so library is used. Not for g++ and not for clang++. However, still adding the -fPIC flag doesn't hurt in those cases.

So strictly speaking, the fix is required for at least clang++ and static exiv2. The fix provided does not take this into account, and simply applies the flag regardless.

neheb commented 1 month ago

This is holdout behavior from Autotools where by default, shared libraries are compiled as PIC but static ones are not. CMake mimics that. meson is PIC everywhere by default for speed reasons.