Skip to content

Conversation

bertwim
Copy link
Contributor

@bertwim bertwim commented May 16, 2024

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.


option(EXIV2_TEAM_PACKAGING "Additional stuff for generating packages" OFF)
set(EXTRA_COMPILE_FLAGS " ")
add_compile_options( "-fPIC" )
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CMAKE_POSITION_INDEPENDENT_CODE

@neheb
Copy link
Collaborator

neheb commented May 20, 2024

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants