We have a link problem on Linux when using GDAL transiently. If we link the
unit tests for a library which depends on GDAL, i.e. an executable which
transiently depends on GDAL through our library, we get the following
linker error:

/usr/bin/ld:
libs/ioimage/tests/CMakeFiles/tests_unit_ioimage.dir/unit/writers/test_geoTiffWriter.cpp.o:
undefined reference to symbol 'dlerror@@GLIBC_2.2.5'
/usr/bin/ld: /lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO
missing from command line

We need to add -ldl to the linker line after GDAL in order to resolve the
linker problem. This can be done when adding the property

  INTERFACE_LINK_LIBRARIES "dl"

to the GDAL::GDAL imported target in GDAL-targets-release.cmake (this is a
generated file); apparently it is not enough to add dl to the
IMPORTED_LINK_DEPENDENT_LIBRARIES_RELEASE property.

Does GDAL depend publicly on dl?
We do not find the proper way to patch GDAL's CMake code to add that
dependency in the generated config file.

Thanks
Javier

.___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__
Entre dos pensamientos racionales
hay infinitos pensamientos irracionales.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to