[Qgis-user] How to compile gdal with ESRI FileGDB

Johan Nilsson joni8135 at gmail.com
Sun Nov 18 05:49:15 PST 2012


Hey. I have had a lot of things to do, but now I tried to make a sample
again. I also made a ln -s *libfgdblinuxrtl.so **libfgdbunixrtl.so* (ESRI
changed the name of the driver)  I tried again and still stuck on make in
samples, as in above and a very simulare error. I have build-essential with
a lot of depends...

joni at Intel:~/Desktop/gdal-mod/FileGDB_API/samples$ make
make -C Domains
make[1]: Entering directory
`/home/joni/Desktop/gdal-mod/FileGDB_API/samples/Domains'
g++ -fPIC -O3 -m32 -W -fexceptions -D_CONSOLE -DUNICODE -D_UNICODE -DUNIX
-D_REENTRANT -DFILEGDB_API -D__USE_FILE_OFFSET64 -DUNIX_FILEGDB_API
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I../../include -I.  -c
Domains.cpp
g++ -fPIC -O3 -m32 -W -fexceptions -D_CONSOLE -DUNICODE -D_UNICODE -DUNIX
-D_REENTRANT -DFILEGDB_API -D__USE_FILE_OFFSET64 -DUNIX_FILEGDB_API
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I../../include -I. -m32
-L"../../lib" -o ../bin/Domains ./Domains.o -lFileGDBAPI
*/usr/bin/ld: warning: libfgdbunixrtl.so, needed by
../../lib/libFileGDBAPI.so, not found (try using -rpath or -rpath-link)*
../../lib/libFileGDBAPI.so: undefined reference to
`SysAllocStringByteLen(char*, unsigned int)'
../../lib/libFileGDBAPI.so: undefined reference to
`VarDateFromStr(wchar_t*, unsigned long, unsigned long, double*)'
../../lib/libFileGDBAPI.so: undefined reference to `IID_IGeometry'
.
.*.A lot of undefined references...* <--my comments
.
../../lib/libFileGDBAPI.so: undefined reference to `PathFileExistsW(wchar_t
const*)'
../../lib/libFileGDBAPI.so: undefined reference to
`PathFindExtensionW(wchar_t const*)'
*collect2: ld returned 1 exit status
make[1]: *** [../bin/Domains] Error 1
make[1]: Leaving directory
`/home/joni/Desktop/gdal-mod/FileGDB_API/samples/Domains'
make: *** [Domains] Error 2*
joni at Intel:~/Desktop/gdal-mod/FileGDB_API/samples$

I wonder if I need to change anything in linux dynamic linker (*ld*)?


2012/11/15 Eric Goddard <egoddard1010 at gmail.com>

> Hmmm, I didn't get any errors like that when I installed so I'm not sure
> what could be causing it. Do you have the build-essential package installed
> that provides the necessary compile tools?
>
>
> On Thu, Nov 15, 2012 at 3:14 AM, Johan Nilsson <joni8135 at gmail.com> wrote:
>
>> Thanks very much Eric :)
>> I have read the instuctions, and
>> tar zxvf FileGDB_API_1_2-32.tar.gz went well but I'm stuck on point 4 in
>> the fist part of you instruction to make a sample to test the driver:
>> ~/Desktop/gdal-mod/FileGDB_API/samples$ make
>> It spot out a lot of thing complaining about 'undefiened reference to'...
>> and it ends like:
>> ../../lib/libFileGDBAPI.so: undefined reference to
>> `PathFileExistsW(wchar_t const*)'
>> ../../lib/libFileGDBAPI.so: undefined reference to
>> `PathFindExtensionW(wchar_t const*)'
>> collect2: ld returned 1 exit status
>> make[1]: *** [../bin/Domains] Error 1
>> make[1]: Leaving directory
>> `/home/a/Desktop/gdal-mod/FileGDB_API/samples/Domains'
>> make: *** [Domains] Error 2
>> Joni at Intel:~/Desktop/gdal-mod/FileGDB_API/samples$
>>
>> I tried to ignore the errors above, but when I move to *bin* it was
>> empty and nothing happend:
>> ~/Desktop/gdal-mod/FileGDB_API/samples/bin$ ./Querying
>> bash: ./Querying: No such file or directory
>> I checked with ls -all and *bin* was empty.
>>
>> Cheers and thanks
>> /Johan
>>
>>
>>
>>
>> 2012/11/14 Eric Goddard <egoddard1010 at gmail.com>
>>
>>> Below are the steps I use to add File Geodatabase support to gdal. This
>>> worked on Ubuntu 12.04 64-bit, but it doesn't use the deb source packages.
>>> Since you have a 32-bit ubuntu install, you need to download the 32-bit
>>> version of the FileGDB API. I tried to answer your questions as they come
>>> up in the steps I list below, so you may want to read through the whole
>>> thing before starting. Sorry for the length, but I hope it helps!
>>>
>>> In terminal:
>>>
>>> 1. Change directory to wherever you downloaded the FileGDBAPI: *cd
>>> path/to/FileGDBAPI_download*
>>>
>>> 2. extract the archive:* tar zxvf FileGDB_API_1_2-32.tar.gz* NOTE:
>>> Since you are using 32-bit Ubuntu, you need to download the 32-bit FileGDB
>>> API.
>>>
>>> 3.You need to build the samples to make sure the API works. Change to
>>> the FileGDB_API samples folder: *cd FileGDB_API/samples*
>>>
>>> 4. type *make*
>>>
>>> 5. Run a sample to make sure it works. Change directory to the bin
>>> folder inside samples: *cd bin *, and then type *./Querying*. You'll
>>> get a bunch of text in terminal, just make sure it doesn't spit out any
>>> errors.
>>>
>>> 6. If the sample runs successfully, you have a working FileGDB API and
>>> you are ready to compile GDAL. I like to move the FileGDB API to a better
>>> location than the downloads directory, but it is up to you. If you choose
>>> to move it, you can use the paths listed below. If you use your own
>>> location, change the path in the commands below to whatever you used. *sudo
>>> mv <your location>/FileGDB_API /usr/local/*
>>>
>>> 7. Create a LD configuration file so that gdal is able to find the FGDB
>>> libraries: *sudo echo /usr/local/FileGDB_API/lib >
>>> etc/ld.so.conf.d/fgdb.conf *
>>>
>>> An explanation of ld is below.
>>>
>>> 8. run ldconfig to update the linked libraries: *sudo ldconfig*
>>>
>>> You're now ready to download and configure gdal.
>>>
>>>
>>> 1. Download gdal from http://download.osgeo.org/gdal/gdal-1.9.2.tar.gz
>>> 2. Extract the contents of the gdal archive: *tar zxvf gdal-1.9.2.tar.gz
>>> *
>>>
>>> 3. Change to the gdal directory: *cd gdal-1.9.2*
>>>
>>> 4. Now gdal needs to be configured. Your configure line may be different
>>> from the one below depending on the options you want included, but the
>>> important line to include is --with-fgdb=/usr/local/FileGDB_API. This is my
>>> configure line on my system: * ./configure --with-geos=yes
>>> --with-sqlite3 --with-python --with-spatialite
>>> --with-fgdb=/usr/local/FileGDB_API --with-postgres --with-odbc
>>> --with-libkml=yes --with-curl=yes
>>> --with-mrsid=/usr/local/MrSID_SDK/Raster_DSDK
>>> --with-mrsid_lidar=/usr/local/MrSID_SDK/Lidar_DSDK
>>> --with-openjpeg=/usr/include*
>>>
>>> The --with statements let the configuration script know what additional
>>> modules you want to be included in the compile. When you install packages,
>>> such as geos, from the repos the libraries are put in paths that ld (which
>>> is a utility that links libraries so that other applications are able to
>>> find them) knows about. When you compile by hand the general practice is to
>>> compile to /usr/local, which sometimes ld doesn't know about by default.
>>> You let ld know about additional paths by creating a configuration file in
>>> /etc/ld.so.conf.d/ that contains the path of your custom compiled
>>> libraries.
>>>
>>> To compile GDAL with the options you want, your line might look
>>> something like this:
>>>
>>> *./configure --with-geos=yes --with-sqlite3 --with-python
>>> --with-spatialite --with-fgdb=/usr/local/FileGDB_API --with-postgres
>>> --with-odbc *
>>>
>>> After configure runs, it will give you a summary that indicates what it
>>> was able to find. Check to make sure that there is a 'yes' beside the
>>> options you want. If there is a no beside something you want to include,
>>> you may need to scroll through the output and find the error to see what
>>> went wrong.
>>>
>>>
>>> 5. Now you can run make and make install. *sudo make*. When that
>>> finishes, run *sudo make install*.
>>>
>>> 6. One more step: you need to let ld know about the gdal libraries.
>>> Since we didn't specify a different path, the configure line above puts
>>> them in /usr/local/lib by default. I let ld know about the libraries by
>>> adding a local.conf file to /etc/ld.so.conf.d/. *sudo echo
>>> /usr/local/lib > /etc/ld.so.conf.d/local.conf*
>>>
>>> 7. Run ldconfig again: *sudo ldconfig*
>>>
>>> *
>>> *
>>>
>>> You should be able to open geodatabases in QGIS or any other GIS
>>> application that uses GDAL now. I expanded on notes that I took while doing
>>> the install, but I didn't have my linux laptop with me while writing this.
>>> Let me know if anything doesn't work or if clarification is needed.
>>> On Nov 13, 2012 9:27 AM, "Johan Nilsson" <joni8135 at gmail.com> wrote:
>>>
>>>>  I have tried to find how I compile gdal 1.9.2 with ESRIs FileGDB_API,
>>>> but I'm are very uncertain how it work. I have Ubuntu 10.04LTS 32-bit
>>>> with PAE. I another step I downloaded source-code for gdal-1.9.2 and added
>>>> needed packed with:
>>>>
>>>> *cd ~/Desktop/gdal-mod* <--move cursor to the created folder.
>>>> *apt-get source gdal-bin *<--download source-cod from my respositories
>>>> (same as my binary installed on my system, into the folder I stand in
>>>> ~/Desktop/gdal-mod)
>>>> *sudo apt-get build-dep gdal* <--geting dependencies so my system can
>>>> build the package gdal.
>>>>
>>>>
>>>>  From https://github.com/usgin/ncgmp/wiki/Installation-Example I found
>>>> this example
>>>>
>>>> * *
>>>>
>>>>    1.
>>>>
>>>>    *cd ~/downloads *<--change to the folder with the downloaded driver
>>>>    from ESRI*
>>>>    *
>>>>    2.
>>>>
>>>>    *tar xzf FileGDB_API_1_2-64.tar.gz *<--unpacking
>>>>    3.
>>>>
>>>>    *cd ~/downloads/FileGDB_API/lib *<--goes to a file in the unpacked
>>>>    FileGDB*
>>>>    *
>>>>    4.
>>>>
>>>>    *ln -s libfgdbunixrtl.so libfgdblinuxrtl.so <--made a symbolic link
>>>>    in the folder lib because ESRI change the name.*
>>>>    5.
>>>>
>>>>    *cd ../..* <--up 2 levels*
>>>>    *
>>>>    6.
>>>>
>>>>    *tar xvf gdal-1.9.0.tar.gz *<--unpacking, I have a newer file*
>>>>    *
>>>>    7.
>>>>
>>>>    *cd gdal-1.9.0 *
>>>>    8.
>>>>
>>>>    *./configure --with-pg=/usr/bin/pg_config
>>>>    --with-fgdb=/home/ubuntu/downloads/FileGDB_API
>>>>    --with-geos=/usr/local/bin/geos-config
>>>>    --with-static-proj4=/usr/local/lib/libproj.a --with-python *
>>>>    9.
>>>>
>>>>    *make *
>>>>    10.
>>>>
>>>>    *sudo make install*
>>>>
>>>> First a question! If I make a 'make install', and if it don't work, how
>>>> can i change back to my original gdal-bin?
>>>>
>>>> Second. Does this install libFileGDBAPI.so (Read a tutorial, there they
>>>> said that libFileGDBAPI.so should be install in it default directory,
>>>> which I don't know where it is...
>>>>
>>>>
>>>>  6. I have a newer version of gdal (1.9.2) and I have the 32-bit
>>>> version on this machine. The swift '--with' in this example above are not
>>>> so accurate for my system, I think? What does '--with' really do? Does it
>>>> create links in gdal or does it more?
>>>>
>>>> Does someone know which swift '--with ' I should have or are necessaryor good to have? Do the FileGDB also get compiled at the same time?
>>>>
>>>> I seach my system and change the path in the example: first where I
>>>> have my FileGDB_API and then some other files have also a different
>>>> path? Do I need all this --with, or does a default file add it?
>>>>
>>>> My modified '--with', if it's needed?
>>>>
>>>> ./configure --with-pg=/usr/bin/pg_config
>>>> --with-fgdb=/home/Joni/Desktop/gdal-mod/FileGDB_API
>>>> --with-geos=/usr/bin/geos-config --with-static-proj4=/usr/lib/libproj.a
>>>> --with-python
>>>>
>>>> If I don't add anything more than, my FilGDB_API, there the source-code
>>>> are, does there are any 'Default setting', so It work as now? I had a
>>>> Postgis config-file as in the example. In this example they had
>>>> compiled a geos package, but my system did have libgeos and a geos-config
>>>> file in above blue directory. The '*--with-static-proj4=/usr/
>>>> local/lib/libproj.a**' *have I changed to another *path*, there I find
>>>> a* **libproj.a** *file.
>>>>
>>>> Hope someone can explain little..
>>>>
>>>> /Cheers
>>>>
>>>> Johan
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Qgis-user mailing list
>>>> Qgis-user at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/qgis-user
>>>>
>>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-user/attachments/20121118/a9db3f4b/attachment.html>


More information about the Qgis-user mailing list