- Download the SDK from ESRI's website http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
- Extract the SDK, and put the contents of the directory in a known location, I used
~/local/filegdb
. Here's an example path to one of the files:~/local/filegdb/lib/libFileGDBAPI.dylib
- I use
~/local/filegdb
so it can stay isolated in it's own place. You can put it anywhere, but the next few steps might be different. - Go into the directory containing the FileGDB SDK, e.g.
~/local/filegdb
- ESRI built these dylib's using
@rpath
's, so to avoid needing to mess withDYLD_LIBRARY_PATH
, I updated the@rpath
's usinginstall_name_tool
. There might be a more elegant way to handle this. If so, comments are welcome! - Here are the commands I used to patch the dylibs, this is not required if you want to use
DYLD_LIBRARY_PATH
yourself:
install_name_tool -id "$(pwd)/lib/libFileGDBAPI.dylib" ./lib/libFileGDBAPI.dylib install_name_tool -change "@rpath/libfgdbunixrtl.dylib" "$(pwd)/lib/libfgdbunixrtl.dylib" ./lib/libFileGDBAPI.dylib install_name_tool -id "$(pwd)/lib/libfgdbunixrtl.dylib" ./lib/libfgdbunixrtl.dylib
- To verify the paths, use
otool -L lib/libFileGDBAPI.dylib
andotool -L lib/libfgdbunixrtl.dylib
and make sure the paths are correct - We need to make some changes to the
configure.in
script for GDAL now, since the FileGDB config script hasn't yet been updated for the OSX FileGDB SDK - In the GDAL source root, edit the
configure.in
and replace it with: - In the GDAL source root, run
./autogen.sh
to re-create theconfigure
script - Now run the
configure
script:
./configure --with-fgdb="$HOME/local/filegdb"
- The
configure
script has many options, here is the configure line I use for my custom build: https://gist.github.com/2005091, if you have other GDAL builds on your machine (e.g. homebrew) that you don't want to interfere with, I recommend at least using--prefix="$HOME/local"
or some other place on your machine besides/usr/local
(default for homebrew) or/opt/local
(default for MacPorts). - If it worked properly, you should see in the output of
configure
indicatingyes
for FileGDB support - Build it:
`make && make install`
- If everything worked, it's time to test it out! Here's a test file: http://trac.osgeo.org/gdal/raw-attachment/wiki/FileGDB/test_fgdb.gdb.zip
which ogr2ogr # make sure it's the correct ogr2ogr first ogrinfo --formats # list out the formats ogrinfo ~/Downloads/test_fgdb.gdb #convert FileGDB directly to PostGIS ogr2ogr -f "PostgreSQL" PG:"dbname='somedatabase' host='localhost' port='5432'" ~/Downloads/test_fgdb.gdb
# save your current GDAL so you can put it back if you want cp /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL_orig # symlink the custom GDAL build to the place QGIS looks rm /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL ln -s ~/local/lib/libgdal.dylib /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL
Note: to select one in QGIS, go to Add Vector Layer -> select the Directory radio button -> Select your .gdb directory
I had some problems opening certain FileGDB's. I believe the API only supports FileGDB's created with ArcGIS 10.0+.
More info: http://trac.osgeo.org/gdal/wiki/FileGDB
@zhm Thanks for the quick reply. I rebuilt GDAL, this time taking your advice to not mess with
DYLD_LIBRARY_PATH
and set filegdb_api paths explicitly. Now it works! Thanks for your help.