Add 'POSITION_INDEPENDENT_CODE ON' (also known as '-fPIE'). (#99)

First thx for these very useful lib!

I encountered some issues when linking with `libcpptrace`. Typically,
here is the error I got:
```
/usr/bin/ld: lib/cpptrace/lib/libcpptrace.a(cpptrace.cpp.o): relocation R_X86_64_32S against symbol `_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21' can not be used when making a PIE object; recompile with -fPIE
```
I just added the `POSITION_INDEPENDENT_CODE ON` flag on the targets, and
now it works like a charm :-).
This commit is contained in:
Adrien Cassagne 2024-03-05 15:57:04 +01:00 committed by GitHub
parent 3054b3bebd
commit d8e23c1e93
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 3 additions and 0 deletions

View File

@ -267,6 +267,7 @@ set_target_properties(
SOVERSION "${PROJECT_VERSION_MAJOR}"
EXPORT_NAME "cpptrace"
OUTPUT_NAME "cpptrace"
POSITION_INDEPENDENT_CODE ${CPPTRACE_POSITION_INDEPENDENT_CODE}
)
# Header files generated by CMake

View File

@ -898,6 +898,7 @@ Other useful configurations:
the fault of your project. Defaults to On.
- `CPPTRACE_INSTALL_CMAKEDIR`: Override for the installation path for the cmake configs.
- `CPPTRACE_USE_EXTERNAL_LIBDWARF=On/Off`: Get libdwarf from `find_package` rather than `FetchContent`.
- `CPPTRACE_POSITION_INDEPENDENT_CODE=On/Off`: Compile the library as a position independent code (PIE). Defaults to On.
Testing:
- `CPPTRACE_BUILD_TESTING` Build small demo and test program

View File

@ -164,6 +164,7 @@ option(CPPTRACE_CONAN "" OFF)
option(CPPTRACE_VCPKG "" OFF)
option(CPPTRACE_SANITIZER_BUILD "" OFF)
option(CPPTRACE_WERROR_BUILD "" OFF)
option(CPPTRACE_POSITION_INDEPENDENT_CODE "" ON)
mark_as_advanced(
CPPTRACE_BACKTRACE_PATH