• Ubuntu源码编译gdal3.6.2


    在华为云申请了一台Ubuntu v18的机器,乱七八糟的不要装。

    apt install build-essential pkg-config -y

    cmake-3.21.1

    apt-get install openssl libssl-dev

    过程参考:Yukon for PostgreSQL_格來羙、日出的博客-CSDN博客

    zlib-1.2.9(不需要)

    如果用系统的后面gdal会提示inflateValidate@ZLIB_1.2.9

    看了下原因,apt安装的是1.2.11。说明版本对应有问题。

    我也尝试把zlib的pkgconfig/lib/include拷贝出来,不过依旧报错(gdal文件夹删了重新编)。

    zlib Home Site

    1. wget https://codeload.github.com/madler/zlib/zip/refs/tags/v1.2.9
    2. #下载后文件名称不对,对的话可以不改
    3. mv v1.2.9 v1.2.9.zip
    4. unzip v1.2.9.zip
    5. cd zlib-1.2.9
    6. ./configure --prefix=/usr/local/zlib-1.2.9
    7. make && make install
    8. #先备份,然后把这里都删了,因为不删后面还是用1.2.11的包,然而apt卸载不掉
    9. cp /lib/aarch64-linux-gnu/libz.so.1.2.11 /opt
    10. rm -rf /lib/aarch64-linux-gnu/libz*
    11. ln -s -f /usr/local/zlib-1.2.9/lib/libz.so.1.2.9 /lib/aarch64-linux-gnu/libz.so.1

    libtiff

    Index of /libtiff/ (osgeo.org)

    undefined reference to `TIFFReadDirectory@LIBTIFF_4.0‘ 

     要自己编译,不然gdal会报TIFFReadDirectory@LIBTIFF_4.0

    1. apt remove libtiff5
    2. #可以先尝试编译下,使用build是迫不得已,提示选择平台
    3. wget http://download.osgeo.org/libtiff/tiff-4.0.9.zip
    4. ./configure --prefix=/usr/local/tiff-4.0.9 \
    5. --build=aarch64-unknown-linux-gnu
    6. make && make install

     #虽然版本不对应,zlib1g-dev对应的是1.2.11,但是用到了一些头文件 
    apt install zlib1g-dev

    #可以先尝试编译下,使用build是迫不得已,提示选择平台
    ./configure --prefix=/usr/local/tiff-4.0.9 \
    --with-zlib-include-dir=/usr/local/zlib-1.2.9/include \
    --with-zlib-lib-dir=/usr/local/zlib-1.2.9/lib/libz.so.1.2.9 \
    --build=aarch64-unknown-linux-gnu

    环境变量 

    1. /etc/profile
    2. #tiff
    3. export TIFF_HOME=/usr/local/tiff-4.0.9
    4. export TIFF_CFLAGS=$TIFF_HOME/include
    5. export TIFF_LIBS=$TIFF_HOME/lib/pkgconfig
    6. export PKG_CONFIG_PATH=$TIFF_LIBS:$PKG_CONFIG_PATH
    7. /etc/ld.so.conf
    8. /usr/local/tiff-4.0.9/lib

    curl-7.29.0(不需要)

    curl downloads

    要自己编译,GDAL编译会报错  curl_mime_init@CURL_GNUTLS_3

    事先声明,curl这种编译方法会不全,需要更详细看官网

    1. apt install libcurl4 libcurl4-openssl-dev curl
    2. wget https://curl.se/download/archeology/curl-7.29.0.tar.gz
    3. ./configure --prefix=/usr/local/curl-7.29.0
    4. #--with-zlib=/usr/local/zlib-1.2.9
    5. make && make install

    proj-9.2.1

    1. wget https://codeload.github.com/OSGeo/PROJ/zip/refs/tags/9.2.1
    2. cmake .. -DCMAKE_BUILD_TYPE=Release \
    3. -DCMAKE_INSTALL_PREFIX=/usr/local/proj-9.2.1 \
    4. -DSQLITE3_INCLUDE_DIR=/usr/local/sqlite3400000/include \
    5. -DSQLITE3_LIBRARY=/usr/local/sqlite3400000/lib/libsqlite3.so \
    6. -DTIFF_INCLUDE_DIR=/usr/local/tiff-4.0.9/include \
    7. -DTIFF_LIBRARY=/usr/local/tiff-4.0.9/lib/libtiff.so \
    8. -DBUILD_TESTING=OFF

    编译前环境

    1. #cmake
    2. export CMAKE_HOME=/usr/local/cmake-3.21.1
    3. export PATH=$CMAKE_HOME/bin:$PATH
    4. #sqlite
    5. export SQLITE_HOME=/usr/local/sqlite3400000
    6. export PATH=$SQLITE_HOME/bin:$PATH
    7. export PKG_CONFIG_PATH=$SQLITE_HOME/lib/pkgconfig:$PKG_CONFIG_PATH
    8. #tiff
    9. export TIFF_HOME=/usr/local/tiff-4.0.9
    10. export TIFF_CFLAGS=$TIFF_HOME/include
    11. export TIFF_LIBS=$TIFF_HOME/lib/pkgconfig
    12. export PKG_CONFIG_PATH=$TIFF_LIBS:$PKG_CONFIG_PATH
    13. #curl
    14. #export CURL_HOME=/usr/local/curl-7.29.0
    15. #export CURL_CFLAGS=$TIFF_HOME/include
    16. #export CURL_LIBS=$TIFF_HOME/lib/pkgconfig
    17. #export PKG_CONFIG_PATH=$CURL_LIBS:$PKG_CONFIG_PATH
    18. #proj
    19. export PROJ_HOME=/usr/local/proj-9.2.1
    20. export PKG_CONFIG_PATH=$PROJ_HOME/lib/pkgconfig:$PKG_CONFIG_PATH
    1. /usr/local/tiff-4.0.9/lib
    2. /usr/local/sqlite3400000/lib
    3. /usr/local/freexl-2.0.0/lib
    4. /usr/local/proj-9.2.1/lib

    gdal-3.6.2

    1. #如果有highgo库,把libz依赖移走,会和gdal的libz冲突
    2. mv /opt/highgo/hgdb-see-4.5.8/lib/libz.so.1 /opt/
    3. cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/gdal-3.6.2 \
    4. -DBUILD_TESTING=OFF \
    5. -DTIFF_INCLUDE_DIR=/usr/local/tiff-4.0.9/include \
    6. -DTIFF_LIBRARY=/usr/local/tiff-4.0.9/lib/libtiff.so \
    7. -DSQLite3_INCLUDE_DIR=/usr/local/sqlite3400000/include \
    8. -DSQLite3_LIBRARY=/usr/local/sqlite3400000/lib/libsqlite3.so \
    9. #支持xls文件格式
    10. -DFREEXL_INCLUDE_DIR=/usr/local/freexl-2.0.0/include \
    11. -DFREEXL_LIBRARY=/usr/local/freexl-2.0.0/lib/libfreexl.so
    12. #支持pg,可选项
    13. -DOGR_ENABLE_DRIVER_PG=ON \
    14. -DPostgreSQL_INCLUDE_DIR=/opt/highgo/hgdb-see-4.5.8/include \
    15. -DPostgreSQL_LIBRARY=/opt/highgo/hgdb-see-4.5.8/lib/libpq.so
    16. #如果上面不装zlib,这里不需要
    17. -DZLIB_INCLUDE_DIR=/usr/local/zlib-1.2.9/include
    18. -DZLIB_LIBRARY=/usr/local/zlib-1.2.9/lib/libz.so.1.2.9

    -DPROJ_INCLUDE_DIR=/usr/local/proj-9.2.1/include 
    -DPROJ_LIBRARY=/usr/local/proj-9.2.1/lib/libproj.so.25.9.2.1 

    Manually-specified variables were not used by the project:

        PROJ_INCLUDE_DIR
        PROJ_LIBRARY

    PROJ is detected in priority through CMake config files, in which case PROJ_INCLUDE_DIR and PROJ_LIBRARY_RELEASE will be ignored.

    官方回复:通过 CMake 配置文件优先检测 PROJ,在这种情况下 PROJ_INCLUDE_DIR 和 PROJ_LIBRARY_RELEASE 将被忽略。 

    配置环境

    1. vi /etc/profile
    2. #gdal
    3. export GDAL_HOME=/usr/local/gdal-3.6.2
    4. export PATH=$GDAL_HOME/bin:$PATH
    5. export PKG_CONFIG_PATH=$GDAL_HOME/lib64/pkgconfig:$PKG_CONFIG_PATH
    6. source /etc/profile
    1. vi /etc/ld.so.conf
    2. ...
    3. /usr/local/gdal-3.6.2/lib
    4. /opt/highgo/hgdb-see-4.5.8/lib #配上libpq
    5. ldconfig -v

     验证 GDAL

    1. #支持格式
    2. ogr2ogr --formats
    3. #导入shp
    4. ogr2ogr -f "PostgreSQL" PG:"host='127.0.0.1' dbname='highgo' user='sysdba' password='Test@123' port=5866" /opt/110m_physical/ne_110m_ocean.shp
    5. #导入xls
    6. ogr2ogr -f "PostgreSQL" PG:"host='127.0.0.1' dbname='highgo' user='sysdba' password='Test@123' port=5866" /opt/dltbxz_tqmj.xlsx

  • 相关阅读:
    基于侏儒猫鼬优化的BP神经网络(分类应用) - 附代码
    升级Spring Cloud最新版后,有个重要的组件被弃用了。。。
    illuminate/database 使用 一
    PostgreSQL的视图pg_roles
    Hibernate认识与入门
    php-fpm 讲解
    “一种三元前驱体废水螯合树脂回收钴的装置”实用新型专利
    LDA算法并提取这份数据集中各个文档的主题
    UG\NX二次开发 选择基准平面 UF_UI_select_with_single_dialog
    网页开发中使用highlight.js实现代码高亮 + 行号
  • 原文地址:https://blog.csdn.net/w345731923/article/details/134469841