我想开发一个小程序来检查一个shapefile中的哪些多边形与给定的矩形相交。这个程序是用来在一个网站(与PHP的
exec()
命令)。问题是,我的web服务器无法安装GDAL,原因我不知道。所以我无法链接到共享库。相反,我必须链接到静态库,但这些库没有给出。
我已经下载了GDAL源代码
from here
(2.3.2最新稳定版本-2018年9月),并遵循构建说明
from here
cd /home/rodrigo/Downloads/gdal232/gdal-2.3.2
mkdir build
./configure --prefix=/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/ --without-ld-shared --disable-shared --enable-static
make
make install
export PATH=/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/bin:$PATH
export LD_LIBRARY_PATH=/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib:$LD_LIBRARY_PATH
export GDAL_DATA=/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/share/gdal
/usr/bin/gdalinfo --version
build/bin/gdalinfo --version
第一个
/usr/bin/gdalinfo --version
提供2.1.2(以前安装的版本)。第二次,
build/bin/gdalinfo --version
现在,我的程序只使用
ogrsf_frmts.h
在页眉中,哪个是
/usr/include/gdal/
或
/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/include/
目录,具体取决于生成。没有
ogrsf_frmts.a
文件,但只有一个
libgdal.a
. 这是我应该链接的文件吗?如果是,怎么做?我已经试过了:
gcc geofragc.cpp -l:libgdal.a
gcc geofragc.cpp -Wl,-Bstatic -l:libgdal.a
gcc geofragc.cpp -Wl,-Bstatic -l:/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib/libgdal.a
gcc geofragc.cpp -Wl,-Bstatic -l/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib/libgdal.a
gcc geofragc.cpp /home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib/libgdal.a
gcc geofragc.cpp -l/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib/libgdal.a
gcc geofragc.cpp -l:/home/rodrigo/Downloads/gdal232/gdal-2.3.2/build/lib/libgdal.a
编辑
二审(
gcc geofragc.cpp -Wl,-Bstatic -l:libgdal.a
)正在给出以下错误:
/usr/bin/ld: cannot find -lgcc_s
/usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/libgdal.a(gdalclientserver.o): In function `GDALServerSpawnAsync()':
(.text+0x1f5e): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: cannot find -lgcc_s
collect2: error: ld returned 1 exit status