Skip to content

GDAL linking to system libjson-c instead of requested libjson-c #3895

@adamjstewart

Description

@adamjstewart

Expected behavior and actual behavior.

I'm trying to install GDAL using an existing installation of libjson-c. I'm telling configure where to find it using --with-libjson-c. According to the config.log, the build does pick up the right version of libjson-c, but ultimately links against the system version and the build crashes with:

/gcc/g++  gdalinfo_bin.lo  /data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/libgdal.la  -o gdalinfo
/data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/.libs/libgdal.so: undefined reference to `json_object_get_userdata'
/data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/.libs/libgdal.so: undefined reference to `json_c_object_sizeof'
collect2: error: ld returned 1 exit status
make[1]: *** [GNUmakefile:90: gdalinfo] Error 1
make[1]: Leaving directory '/data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/apps'
make: *** [GNUmakefile:120: apps-target] Error 2
$ ldd -r /data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/.libs/libgdal.so
	linux-vdso.so.1 =>  (0x00007ffc92ffb000)
	libjson-c.so.2 => /lib64/libjson-c.so.2 (0x00002ada82e03000)
	libjpeg.so.62 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libjpeg-turbo-2.0.6-2uplqkmzpxxntoli3z4gno2r3ov4txq7/lib64/libjpeg.so.62 (0x00002ada8300e000)
	libgeotiff.so.5 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libgeotiff-1.6.0-yq4is6bs7taipfuyi2uqraenrwcyxvuk/lib/libgeotiff.so.5 (0x00002ada832a3000)
	liblzma.so.5 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/xz-5.2.5-tlrh4ts46kmxzwx34ay7d7fdk6m4y3xd/lib/liblzma.so.5 (0x00002ada834d7000)
	libproj.so.19 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/proj-7.2.1-dzvrkjdzoy42ivr6acuticd4eqvs66ul/lib/libproj.so.19 (0x00002ada836fd000)
	libtiff.so.5 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libtiff-4.1.0-ufpixfx7frhh37ovmfvqnil6mnwzvx7g/lib/libtiff.so.5 (0x00002ada83c5f000)
	libz.so.1 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/zlib-1.2.11-o5eyrr46zecie66pglu4lamuqvhpcrkl/lib/libz.so.1 (0x00002ada83eda000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ada840f1000)
	librt.so.1 => /lib64/librt.so.1 (0x00002ada8430d000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00002ada84515000)
	libiconv.so.2 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libiconv-1.16-3h4ijv3dekrsfiejax5zgakffztcr4a5/lib/libiconv.so.2 (0x00002ada84719000)
	libstdc++.so.6 => /sw/gcc-9.3.0/lib/../lib64/libstdc++.so.6 (0x00002ada84a16000)
	libm.so.6 => /lib64/libm.so.6 (0x00002ada84df0000)
	libc.so.6 => /lib64/libc.so.6 (0x00002ada850f2000)
	/lib64/ld-linux-x86-64.so.2 (0x00002ada81c7d000)
	libgcc_s.so.1 => /sw/gcc-9.3.0/lib/../lib64/libgcc_s.so.1 (0x00002ada854c0000)
	libsqlite3.so.0 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/sqlite-3.35.5-7nsxx6bdqfxhbzubr3qo5xtjwkmcyeaw/lib/libsqlite3.so.0 (0x00002ada856d8000)
	libcurl.so.4 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/curl-7.76.1-p24yzuljbvtdkotcts7twz5d245fbwlx/lib/libcurl.so.4 (0x00002ada859fb000)
	libidn2.so.0 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libidn2-2.3.0-pb37dfy42weiwnilmp7gjumphgei7k7j/lib/libidn2.so.0 (0x00002ada85c7d000)
	libssl.so.1.1 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/openssl-1.1.1k-fpqvofqgdeat5is2k6am5dzinbxcz2tu/lib/libssl.so.1.1 (0x00002ada85e9d000)
	libcrypto.so.1.1 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/openssl-1.1.1k-fpqvofqgdeat5is2k6am5dzinbxcz2tu/lib/libcrypto.so.1.1 (0x00002ada86130000)
	libunistring.so.2 => /data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/libunistring-0.9.10-72fcbpxxc3gvpxptlj4i7u5aqow3cyqt/lib/libunistring.so.2 (0x00002ada86615000)
undefined symbol: json_object_get_userdata	(/data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/.libs/libgdal.so)
undefined symbol: json_c_object_sizeof	(/data/geol552/a/adamjs5/spack-stage-gdal-3.2.3-ozkzmsnz4b4ucfeag6ezpb7xg6e67kpf/spack-src/.libs/libgdal.so)

Steps to reproduce the problem.

$ configure ... --with-libjson-c=/data/keeling/a/adamjs5/spack/opt/spack/linux-centos7-x86_64/gcc-9.3.0/json-c-0.15-jypilhqx24qxiynsqbfypwqjf7gsheib

See the following files for the full build log and environment variables used:

Operating system

This error has occurred on the following operating systems:

  • CentOS 7.9.2009 64-bit
  • RHEL 7 64-bit

GDAL version and provenance

I'm attempting to install GDAL using the Spack package manager. The above failure happens for both GDAL 3.3.0 and 3.2.3.

Originally reported by @tldahlgren in spack/spack#23943

P.S. If anyone wants to help me maintain Spack's GDAL recipe, please let me know!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions