Opened 8 years ago

Closed 8 years ago

#6656 closed defect (fixed)

Cannot build gdal 2.1 with filegdb support on linux

Reported by: d7rk Owned by: warmerdam
Priority: normal Milestone:
Component: default Version: 2.1.0
Severity: normal Keywords: gdal filegdb build linux
Cc:

Description (last modified by d7rk)

Build fails (makepkg -src) on manjaro linux after numerous returns of the type:

/home/XXX/tmp/pacaurtmp-XXX/gdal/src/gdal-2.1.0/.libs/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::Delete(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
/home/XXX/tmp/pacaurtmp-XXX/gdal/src/gdal-2.1.0/.libs/libgdal.so: undefined reference to `FileGDBAPI::Row::SetFloat(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, float)'
etc.
collect2: error: ld returned 1 exit status
make[1]: *** [GNUmakefile:82: gdalinfo] Error 1
make[1]: Leaving directory '/home/XXX/tmp/pacaurtmp-XXX/gdal/src/gdal-2.1.0/apps'
make: *** [GNUmakefile:94: apps-target] Error 2

Versions used are: filegdb-api 1.4-2 gdal 2.1.0

Change History (6)

comment:1 by d7rk, 8 years ago

Description: modified (diff)
Version: 2.1.12.1.0

comment:2 by Even Rouault, 8 years ago

I assume you use a recent GCC that enables the new libstdc++ C++11 ABI (https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html), whereas the FileGDB binaries are built with the older one

You can try rebuilding after configuring with: CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0" ./configure [other_options]

But you might have issues if using C++ gdal dependencies built with the new ABI, or if using GDAL in a C++ software built with the new ABI. No perfect solution exists until ESRI releases a new binary.

If you just need read-only support, the builtin OpenFileGDB driver should be good enough.

comment:3 by d7rk, 8 years ago

Sadly gdal does not build with the flag provided. The same errors are obtained.

comment:4 by Even Rouault, 8 years ago

did you run "make clean" before rebuilding with the new flags ? if not, try it.

comment:5 by d7rk, 8 years ago

You were right! It does work.
Sorry for my mistake and thank you so much for your time.
Best regards,

comment:6 by Even Rouault, 8 years ago

Resolution: fixed
Status: newclosed

I've added a paragraph in the wiki regarding this issue : https://trac.osgeo.org/gdal/wiki/FileGDB#HowtodealwithGCC5.1C11ABIonLinux

Note: See TracTickets for help on using tickets.