Opened 7 years ago

Closed 7 years ago

#6771 closed defect (wontfix)

Compilation with FileGDB: Compilation fails when '--with-fgdb' is passed to configure. Error: 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&)'

Reported by: dreieck Owned by: warmerdam
Priority: normal Milestone:
Component: default Version: 2.1.1
Severity: normal Keywords: build, compilation, fgdb, FileGDB
Cc:

Description

When I try to compile gdal 2.1.1 on my Arch Linux system (64 bit) with fgdb enabled (--with-fgdb=/usr passed to configure), it fails with the following error messages:

/var/abs/local/own/gdal-custom/src/gdal-2.1.1/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&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/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)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetDouble(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, double)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::GetQueryName(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'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetDouble(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, double&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::CreateTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Table&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetGUID(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Guid const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetNull(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::FieldInfo::GetFieldName(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::OpenGeodatabase(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Geodatabase&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetFloat(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, float&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetDate(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, tm&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::GetDocumentation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetShort(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, short)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::OpenTable(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Table&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::CreateFeatureDataset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetDate(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, tm const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetBinary(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::ByteArray&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetInteger(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, int)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::DeleteField(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::ExecuteSQL(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool, FileGDBAPI::EnumRows&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::CreateGeodatabase(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Geodatabase&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Geodatabase::GetChildDatasets(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&, std::vector<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >, std::allocator<std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > > >&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::AddField(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetBinary(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::ByteArray const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Guid::ToString(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::IsNull(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, bool&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetShort(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, short&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetXML(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::DeleteGeodatabase(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetInteger(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, int&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::Search(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&, bool, FileGDBAPI::EnumRows&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetString(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'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Guid::FromString(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::Search(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&, FileGDBAPI::Envelope const&, bool, FileGDBAPI::EnumRows&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetXML(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Table::GetDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) const'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::SetString(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&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::ErrorInfo::GetErrorDescription(int, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)'
/var/abs/local/own/gdal-custom/src/gdal-2.1.1/libgdal.so: undefined reference to `FileGDBAPI::Row::GetGUID(std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&, FileGDBAPI::Guid&) const'
collect2: error: ld returned 1 exit status

I use the following commands to build gdal (taken from the official Arch Linux PKGBUILD, and modified):

Error: Failed to load processor bash
No macro or processor named 'bash' found

The package filegdb-api is installed.

As additional information, the following files are attached:

  • PKGBUILD used to build the package in the way to produce the error,
  • a configuration and compilation output (stdout and stderr combined) when the package is built with --with-fgdb=/usr,
  • a configuration and compilation output (stdout and stderr combined) when the package is built with --without-fgdb,
  • the contents of my installed package filegdb-api.

Attachments (4)

PKGBUILD.with-fgdb=usr (4.5 KB ) - added by dreieck 7 years ago.
PKGBUILD with '--with-fgdb=/usr'.
makepkg.with-fgdb=usr.log.xz (28.7 KB ) - added by dreieck 7 years ago.
Compile log (stdout and stderr) with '--with-fgdb=/usr'.
makepkg.without-fgdb.log.xz (72.3 KB ) - added by dreieck 7 years ago.
Compile log (stdout and stderr) with '--without-fgdb'.
filegdb-api.packagecontent (10.6 KB ) - added by dreieck 7 years ago.
Content of the Arch Linux package 'filegdb-api'.

Download all attachments as: .zip

Change History (6)

by dreieck, 7 years ago

Attachment: PKGBUILD.with-fgdb=usr added

PKGBUILD with '--with-fgdb=/usr'.

by dreieck, 7 years ago

Compile log (stdout and stderr) with '--with-fgdb=/usr'.

by dreieck, 7 years ago

Attachment: makepkg.without-fgdb.log.xz added

Compile log (stdout and stderr) with '--without-fgdb'.

by dreieck, 7 years ago

Attachment: filegdb-api.packagecontent added

Content of the Arch Linux package 'filegdb-api'.

comment:1 by dreieck, 7 years ago

Keywords: FileGDB added
Summary: compilation fails when '--with-fgdb' is passed to configure. Error: 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&)'Compilation with FileGDB: Compilation fails when '--with-fgdb' is passed to configure. Error: 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&)'

comment:2 by Even Rouault, 7 years ago

Resolution: wontfix
Status: newclosed

This is an ABI issue. The FileGDB SDK is only available with the old C++ ABI. See https://trac.osgeo.org/gdal/wiki/FileGDB#HowtodealwithGCC5.1C11ABIonLinux

Note: See TracTickets for help on using tickets.