本地编译安装|编译安装最新版postgis3.4.3版本指南

news2024/10/2 6:34:03

一、本地编译安装步骤介绍

本地编译,指的是在本地环境编译安装某个软件,例如,本文所述的最新版postgis3.4.3,本地是什么cpu架构,编译完成后,编译产出物就可以在其它的同cpu架构的服务器上直接适用了,这里着重强调本地编译以区别于交叉编译

那么,回到开始的问题,本地编译最新版postgis3.4.3,这里的编译难点主要在于两点,第一个是编译环境的准备,第二个是编译的调试

编译环境,指的是能够使得编译工作完成的环境,主要就是安装各类依赖,例如,本文使用的最新版postgis3.4.3是基于c语言编写的,那么,编译环境就必须包含有各种各样的类库,比如gtk2-devel  libxml2 libxml2-devel 这些类库,并且至少需要有一个gcc环境,并且这些类库以及gcc环境的版本可能都会有一定的要求,而版本依赖如何处理,如何使得这些安装的类库能够正常工作,这些问题使得编译环境的准备非常复杂,而本文将就这些困难的问题,做一个全面的解释,并指出一个可能更为高效,简洁的解决方案

编译调试,指的是从编译的错误处开始,直到消除所有的错误,最终完成编译的工作;很多同学拿到一个编译任务的时候,都只是简单的百度一下,然后根据各类教程进行编译活动,那么,其实我们的编译工作是应该有一个准确的良好的开端的,即编译工作到底应该从哪里开始,如何一步一步的把编译工作推进?

回到本文的最新版postgis3.4.3,我们拿到它的源码包后,应该是从哪里开始呢?当然了,首先第一步是阅读源码包内的说明文档,并根据文档内容,制定一个编译流程,然后开始我们的预编译工作,进而开始我们的编译工作和编译安装工作;那么,预编译如果报错了,我们应该如何做呢?当然是根据详细的报错信息,一步一步解决,这样的编译工作到最后都是自然的水到渠成的,能够顺利完成的

🆗,就不在这里废话了,下面以最新版postgis3.4.3在centos7的x86_64架构下如何一步步完成编译工作做一个简单的记录

二、最新版postgis3.4.3源码包的下载

下载地址:https://github.com/postgis/postgis/tags

或者在postgis的官网下载,下载地址:

Index of /postgis/source/

三、最新版postgis3.4.3源码包内的安装文档阅读

 主要的安装文档是README.postgis,该文档里有详细介绍postgis的依赖情况,根据这个文档,做如下总结:

postgis-3.4.3安装
依赖如下:
1、GEOS  

 - 3.12+ for ST_CoverageSimplify and ST_CoverageInvalidEdges
  - 3.11+ for improved ST_ConcaveHull, ST_lineMerge,
    and new functions ST_SimplifyPolygonHull, ST_TriangulatePolygon
  - 3.10+ for ST_MakeValid enhancements
  - 3.9+ is needed to take advantage of
    fixed precision enhancements in overlay functions
  - 3.7+ is needed just for the ST_FrechetDistance function
最低版本是3.6,如果需要功能比较齐全,需要安装版本3.12  3..0.0用的是3.8.0版本,该版本需要高版本cmake编译,也就是使用cmake3,gcc版本至少需要7

2、  PROJ4  
PROJ4 (Required, Version 6.1 or higher) 需要sqlite开发包,make编译比较慢,gcc7下通过
3、 protobuf
4、 protobuf-c-1.3.1,protobuf-c (Optional, Version 1.1.0 or higher)
现有的是protobuf-c-1.3.1,符合要求

5、  gdal 这里使用高版本3.3.3,这个编译比较慢,GDAL
弱依赖,可以不安装,但建议安装,现有版本是gdal-2.1.3,建议安装3版本,该插件主要是启用光栅功能
6、  cgal  
CGAL 4.1+ and SFCGAL 1.3.2+ 
高级3D共功能,建议安装
现有的是CGAL-4.13和SFCGAL-1.3.6,符合要求,SFCGAL 1.4.1+会支持更好
7、 sfcgal  

8、libxml2

[root@centos4 postgis-3.4.3]# rpm -qa |grep libxml
libxml2-2.9.1-6.el7.5.x86_64
libxml2-devel-2.9.1-6.el7.5.x86_64
需要版本2.5.0 ,现有仓库是2.9,可以直接rpm安装


10、gettext

rpm安装的是0.19.8.1
[root@centos4 postgis-3.4.3]# rpm -qa |grep gettext
gettext-0.19.8.1-3.el7.x86_64
gettext-libs-0.19.8.1-3.el7.x86_64

图形化界面使用的,版本要求是0.14,现有仓库是0.19.8,可以直接rpm安装

11、
JSON-C,现有版本未知,要求的是0.9及以上

 在源码目录内可以看到,并没有configure.sh 这个预编译脚本,因此,需要安装autoconf和automake以生成configure.sh 这个预编译脚本,最终总结,应该使用yum安装如下依赖:

yum install automake autoconf gtk2 gtk2-devel  libxml2 libxml2-devel  xz xz-devel libtool autoconf automake gcc gcc-c++ make gettext sqlite sqlite-devel

四、根据最新版postgis3.4.3的安装文档确定编译工作中的各个依赖以及依赖如何处理

根据第三节所述,可以看到,我们需要的依赖GEOS  PROJ4  protobuf protobuf-c  gdal   cgal sfcgal   这些需要特定版本,通常yum仓库内并没有现成的使用,因此,这些组件需要手动编译

而这些依赖安装还是有一定的顺序要求,因此,采用根据预编译日志来逐一处理的方式进行处理

下面将就在VMware 虚拟机 centos7操作系统,x86_64架构下编译最新版postgis3.4.3做一个详细的记录

五、最新版postgis3.4.3的预编译工作

1、将postgis3.4.3源码包上传到VMware虚拟机服务器后,解压待用

刚解压的源码包内发现是没有configure.sh 文件的,此时需要通过autogen.sh 脚本生成

2、

autogen.sh 脚本运行前的依赖安装

yum install automake autoconf gtk2 gtk2-devel  libxml2 libxml2-devel  xz xz-devel libtool autoconf automake gcc gcc-c++ make gettext sqlite sqlite-devel -y

3、

运行autogen.sh 脚本生成configure.sh 脚本

[root@centos4 postgis-3.4.3]# ./autogen.sh 
* Running /usr/bin/libtoolize (2.4.2)
   OPTIONS = --force --copy --install
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'.
libtoolize: copying file `build-aux/config.guess'
libtoolize: copying file `build-aux/config.sub'
libtoolize: copying file `build-aux/install-sh'
libtoolize: copying file `build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `macros'.
libtoolize: copying file `macros/libtool.m4'
libtoolize: copying file `macros/ltoptions.m4'
libtoolize: copying file `macros/ltsugar.m4'
libtoolize: copying file `macros/ltversion.m4'
libtoolize: copying file `macros/lt~obsolete.m4'
libtoolize: Consider adding `-I macros' to ACLOCAL_AMFLAGS in Makefile.am.
* Running /usr/bin/aclocal (1.13.4)
* Running /usr/bin/autoconf (2.69)
======================================
Now you are ready to run './configure'
======================================

可以看到,autogen是依赖于libtool 这个依赖,以及依赖autoconf,aotomake 这两个依赖而运行的

4、

初次预编译

本次预编译肯定会报错,编译工作就是不停的试错

。。。。。。。。。。。。。。。省略
checking iconv.h usability... yes
checking iconv.h presence... yes
checking for iconv.h... yes
checking for libiconv_open in -liconv... no
checking for iconv_open in -lc... yes
checking for iconvctl... no
checking for libiconvctl... no
checking for pg_config... no
configure: error: could not find pg_config within the current path. You may need to re-run configure with a --with-pgconfig parameter.
。。。。。。。。结尾了

可以看到,首要依赖是postgresql数据库,解决方法很简单,先安装一个postgresql

yum install postgresql12-server-12.4 postgresql12-libs-12.4 postgresql12-devel-12.4 postgresql12-contrib-12.4 postgresql12-tcl postgresql12-odbc postgresql12-12.4  postgresql12-plperl-12.4 postgresql12-pltcl-12.4 postgresql12-plpython-12.4  postgresql12-plpython3-12.4 postgresql12-llvmjit-12.4 postgresql12-devel-12.4  -y

数据库安装完毕后,搜pg_config,找到该文件后,将预编译命令修改为如下: 


[root@centos4 postgis-3.4.3]# find / -name pg_config
/usr/pgsql-12/bin/pg_config

./configure  --with-pgconfig=/usr/pgsql-12/bin/pg_config

预编译报错如下:

checking libxml/xpathInternals.h usability... yes
checking libxml/xpathInternals.h presence... yes
checking for libxml/xpathInternals.h... yes
checking for xmlInitParser in -lxml2... yes
checking for geos-config... no
configure: error: could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig paramete

提示缺少geos这个依赖

5、

解决geos这个依赖

查询自建的yum仓库,可以看到有3.11版本的geos,但前面提到的文档说3.12的版本更好,因此,geos自编译

[root@centos4 postgis-3.4.3]# yum list |grep geos
Repository 'local' is missing name in configuration, using id
geos.x86_64                                3.4.2-2.el7            epel_x86_64   
geos-devel.x86_64                          3.4.2-2.el7            epel_x86_64   
geos-php.x86_64                            3.4.2-2.el7            epel_x86_64   
geos-python.x86_64                         3.4.2-2.el7            epel_x86_64   
geos310.x86_64                             3.10.3-1.rhel7         pg_all        
geos310-debuginfo.x86_64                   3.10.3-1.rhel7         pg_all        
geos310-devel.x86_64                       3.10.3-1.rhel7         pg_all        
geos311.x86_64                             3.11.2-1.rhel7         pg_all        
geos311-debuginfo.x86_64                   3.11.2-1.rhel7         pg_all        
geos311-devel.x86_64                       3.11.2-1.rhel7         pg_all        
geos37.x86_64                              3.7.2-2.rhel7          pg_all        
geos37-debuginfo.x86_64                    3.7.2-2.rhel7          pg_all        
geos37-devel.x86_64                        3.7.2-2.rhel7          pg_all        
geos38.x86_64                              3.8.1-2.rhel7          pg_all        
geos38-debuginfo.x86_64                    3.8.1-2.rhel7          pg_all        
geos38-devel.x86_64                        3.8.1-2.rhel7          pg_all        
geos39.x86_64                              3.9.2-1.rhel7          pg_all        
geos39-debuginfo.x86_64                    3.9.2-1.rhel7          pg_all        
geos39-devel.x86_64                        3.9.2-1.rhel7          pg_all        

从GitHub上下载geos-3.12.2.tar.bz这个文件,下载地址就不用说了,一搜就找到了,开始预编译geos:

root@centos4 ~]# tar xf geos-3.12.2.tar.bz2 
[root@centos4 ~]# cd geos-3.12.2
[root@centos4 geos-3.12.2]# ./configure 
You need cmake to build this package

🆗,这个geos高版本需要cmake编译器来编译,查询仓库可以看到有cmake3:

root@centos4 geos-3.12.2]# yum list |grep cmake
Repository 'local' is missing name in configuration, using id
cmake.x86_64                               2.8.12.2-2.el7         base_x86_64   
cmake-fedora.noarch                        2.9.3-1.el7            epel_x86_64   
cmake-gui.x86_64                           2.8.12.2-2.el7         base_x86_64   
cmake3.x86_64                              3.17.5-1.el7           epel_x86_64   
cmake3-data.noarch                         3.17.5-1.el7           epel_x86_64   
cmake3-doc.noarch                          3.17.5-1.el7           epel_x86_64   
cmake3-gui.x86_64                          3.17.5-1.el7           epel_x86_64   
extra-cmake-modules.noarch                 5.52.0-1.el7           epel_x86_64   

直接安装这个cmake3,版本3.17

yum install cmake3*  -y

创建build目录,并进入build目录,开始编译geos:

[root@centos4 geos-3.12.2]# mkdir build
[root@centos4 geos-3.12.2]# cd build/
[root@centos4 build]# cmake3 ../

预编译通过后发现make有问题,make失败,失败日志如下:

[root@centos4 build]# make
Scanning dependencies of target ryu
[  0%] Building C object src/deps/CMakeFiles/ryu.dir/ryu/d2s.c.o
[  0%] Built target ryu
Scanning dependencies of target geos
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/Angle.cpp.o
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/Area.cpp.o
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/BoundaryNodeRule.cpp.o
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/CGAlgorithmsDD.cpp.o
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/Centroid.cpp.o
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/ConvexHull.cpp.o
In file included from /root/geos-3.12.2/src/algorithm/ConvexHull.cpp:30:0:
/root/geos-3.12.2/include/geos/util.h:38:12: error: ‘std::make_unique’ has not been declared
 using std::make_unique;
            ^
/root/geos-3.12.2/src/algorithm/ConvexHull.cpp: In member function ‘std::unique_ptr<geos::geom::CoordinateSequence> geos::algorithm::ConvexHull::toCoordinateSequence(geos::geom::Coordinate::ConstVect&)’:
/root/geos-3.12.2/src/algorithm/ConvexHull.cpp:118:15: error: ‘make_unique’ is not a member of ‘geos::detail’
     auto cs = detail::make_unique<CoordinateSequence>(cv.size());
               ^
/root/geos-3.12.2/src/algorithm/ConvexHull.cpp:118:53: error: expected primary-expression before ‘>’ token
     auto cs = detail::make_unique<CoordinateSequence>(cv.size());
                                                     ^
make[2]: *** [CMakeFiles/geos.dir/src/algorithm/ConvexHull.cpp.o] Error 1
make[1]: *** [CMakeFiles/geos.dir/all] Error 2
make: *** [all] Error 2

这里的错误的真实意思是gcc编译器找不到某个函数,而根本原因是gcc版本过低,是4.8.5,因此,升级gcc版本到7.3就可以解决此问题了(build目录需要清空,重新预编译一次,然后开始make和make install):

[root@centos4 build]# source /opt/rh/
devtoolset-7/   llvm-toolset-7/ 
[root@centos4 build]# source /opt/rh/devtoolset-7/enable 
[root@centos4 build]# make
[  0%] Built target ryu
[  0%] Building CXX object CMakeFiles/geos.dir/src/algorithm/ConvexHull.cpp.o
In file included from /root/geos-3.12.2/src/algorithm/ConvexHull.cpp:30:0:
/root/geos-3.12.2/include/geos/util.h:38:12: error: ‘std::make_unique’ has not been declared
 using std::make_unique;

剩下的时候基本没有什么困难了,一路顺畅,geos安装完毕后,回到postgis目录下,继续预编译调试

6、再次预编译postgis

checking for CFPreferencesCopyAppValue... no
checking for CFLocaleCopyPreferredLanguages... no
checking for GNU gettext in libc... yes
checking whether to use NLS... yes
checking where the gettext function comes from... libc
checking for PROJ... no
checking proj_api.h usability... no
checking proj_api.h presence... no
checking for proj_api.h... no
checking proj.h usability... no
checking proj.h presence... no
checking for proj.h... no
configure: error: could not find proj.h or proj_api.h - you may need to specify the directory of a PROJ installation using --with-projdir

报错没有proj4,并且说明这个是强依赖,必须安装,可以看到yum仓库里有高版本的proj4

[root@centos4 postgis-3.4.3]# yum list |grep proj
Repository 'local' is missing name in configuration, using id
apache-james-project.noarch                1.8.1-14.el7           epel_x86_64   
fedora-gnat-project-common.noarch          3.9-1.el7              epel_x86_64   
geany-plugins-projectorganizer.x86_64      1.38-1.el7             epel_x86_64   
httpcomponents-project.noarch              6-4.el7                base_x86_64   
jetty-project.noarch                       9.0.3-8.el7            base_x86_64   
libprojectM.x86_64                         2.1.0-2.el7            epel_x86_64   
libprojectM-devel.x86_64                   2.1.0-2.el7            epel_x86_64   
libprojectM-qt.x86_64                      2.1.0-2.el7            epel_x86_64   
libprojectM-qt-devel.x86_64                2.1.0-2.el7            epel_x86_64   
maven-project.noarch                       2.2.1-47.el7           base_x86_64   
maven-project-info-reports-plugin.noarch   2.6-8.el7              base_x86_64   
maven-project-info-reports-plugin-javadoc.noarch
pjproject.x86_64                           2.3-6.el7              epel_x86_64   
pjproject-devel.x86_64                     2.3-6.el7              epel_x86_64   
proj.x86_64                                4.8.0-4.el7            epel_x86_64   
proj-devel.x86_64                          4.8.0-4.el7            epel_x86_64   
proj-epsg.x86_64                           4.8.0-4.el7            epel_x86_64   
proj-nad.x86_64                            4.8.0-4.el7            epel_x86_64   
proj-static.x86_64                         4.8.0-4.el7            epel_x86_64   
proj49.x86_64                              4.9.3-3.rhel7          pg_all        
proj49-debuginfo.x86_64                    4.9.3-3.rhel7          pg_all        
proj49-devel.x86_64                        4.9.3-3.rhel7          pg_all        
proj49-epsg.x86_64                         4.9.3-3.rhel7          pg_all        
proj49-nad.x86_64                          4.9.3-3.rhel7          pg_all        
proj49-static.x86_64                       4.9.3-3.rhel7          pg_all        
proj62.x86_64                              6.2.1-1.rhel7          pg_all        
proj62-debuginfo.x86_64                    6.2.1-1.rhel7          pg_all        
proj62-devel.x86_64                        6.2.1-1.rhel7          pg_all        
proj62-static.x86_64                       6.2.1-1.rhel7          pg_all        
proj63.x86_64                              6.3.1-1.rhel7          pg_all        
proj63-debuginfo.x86_64                    6.3.1-1.rhel7          pg_all        
proj63-devel.x86_64                        6.3.1-1.rhel7          pg_all        
proj63-static.x86_64                       6.3.1-1.rhel7          pg_all        
proj70.x86_64                              7.0.1-4.rhel7          pg_all        
proj70-debuginfo.x86_64                    7.0.1-4.rhel7          pg_all        
proj70-devel.x86_64                        7.0.1-4.rhel7          pg_all        
proj70-static.x86_64                       7.0.1-4.rhel7          pg_all        
proj71.x86_64                              7.1.1-3.rhel7          pg_all        
proj71-debuginfo.x86_64                    7.1.1-3.rhel7          pg_all        
proj71-devel.x86_64                        7.1.1-3.rhel7          pg_all        
proj71-static.x86_64                       7.1.1-3.rhel7          pg_all        
proj72.x86_64                              7.2.1-1.rhel7          pg_all        
proj72-debuginfo.x86_64                    7.2.1-1.rhel7          pg_all        
proj72-devel.x86_64                        7.2.1-1.rhel7          pg_all        
proj72-static.x86_64                       7.2.1-1.rhel7          pg_all        
proj80.x86_64                              8.0.1-1.rhel7          pg_all        
proj80-debuginfo.x86_64                    8.0.1-1.rhel7          pg_all        
proj80-devel.x86_64                        8.0.1-1.rhel7          pg_all        
proj80-static.x86_64                       8.0.1-1.rhel7          pg_all        
proj81.x86_64                              8.1.1-1.rhel7          pg_all        
proj81-debuginfo.x86_64                    8.1.1-1.rhel7          pg_all        
proj81-devel.x86_64                        8.1.1-1.rhel7          pg_all        
proj81-static.x86_64                       8.1.1-1.rhel7          pg_all        

因此,使用yum来处理这个依赖:

yum install proj63* -y

yum安装完毕后,postgis的预编译命令又需要更改了:

./configure  --with-pgconfig=/usr/pgsql-12/bin/pg_config --with-projdir=/usr/proj63/

上面这个命令输出如下:

checking whether to use NLS... yes
checking where the gettext function comes from... libc
Using user-specified proj directory: /usr/proj63/
checking proj_api.h usability... no
checking proj_api.h presence... no
checking for proj_api.h... no
checking proj.h usability... yes
checking proj.h presence... yes
checking for proj.h... yes
checking for proj.h... (cached) yes
checking for pj_get_release in -lproj... yes
checking for JSONC... no
configure: WARNING: "Could not find json-c"
checking for PROTOBUFC... no
libprotobuf-c not found in pkg-config
checking protobuf-c/protobuf-c.h usability... no
checking protobuf-c/protobuf-c.h presence... no
checking for protobuf-c/protobuf-c.h... no
configure: error: unable to find protobuf-c/protobuf-c.h using CPPFLAGS. You can disable MVT and Geobuf support using --without-protobuf

可以看到,proj4已经通过,但protobuf-c 这个强依赖没有通过,因为还没安装,下面处理protobuf-c 

7、protobuf-c的安装

protobuf和protobuf-c互为依赖

protobuf的安装

cd protobuf-2.6.1
./configure  --prefix=/usr/local/protobuf
make && make install
注意,要指定安装路径哦!!! 

protobuf-c的安装

vim /etc/profile  在文件末尾添加如下内容:

export PROTOBUF_HOME=/usr/local/protobuf
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig
 执行命令  source /etc/profile 激活环境变量

解压安装文件后,进入目录,并执行编译:

cd protobuf-c-1.3.1
./configure  --prefix=/usr/local/protobuf-c
make && make install
注意,要指定安装路径哦!!

8、再次预编译postgis-3.4.3

此时日志报错如下;

checking for PROTOBUFC... no
libprotobuf-c not found in pkg-config
checking protobuf-c/protobuf-c.h usability... yes
checking protobuf-c/protobuf-c.h presence... yes
checking for protobuf-c/protobuf-c.h... yes
checking for protobuf_c_message_init in -lprotobuf-c... yes
checking for protobuf_c_version in -lprotobuf-c... yes
checking protobuf-c version... configure: error: "Old protobuf-c release found but 1.1.0 is required. You can disable MVT and Geobuf support using --without-protobuf"

解决方式为安装低版本的protobuf-c的开发库:

yum install protobuf-c*
Loaded plugins: fastestmirror
Repository 'local' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package protobuf-c.x86_64 0:1.0.2-3.el7 will be installed
---> Package protobuf-c-compiler.x86_64 0:1.0.2-3.el7 will be installed
--> Processing Dependency: libprotobuf.so.8()(64bit) for package: protobuf-c-compiler-1.0.2-3.el7.x86_64
---> Package protobuf-c-devel.x86_64 0:1.0.2-3.el7 will be installed
---> Package protobuf-compiler.x86_64 0:2.5.0-8.el7 will be installed
--> Running transaction check
---> Package protobuf.x86_64 0:2.5.0-8.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================================================================================================================================================
 Package                                                                                  Arch                                                                        Version                                                                          Repository                                                                        Size
==============================================================================================================================================================================================================================================================================================================================================
Installing:
 protobuf-c                                                                               x86_64                                                                      1.0.2-3.el7                                                                      base_x86_64                                                                       28 k
 protobuf-c-compiler                                                                      x86_64                                                                      1.0.2-3.el7                                                                      base_x86_64                                                                       80 k
 protobuf-c-devel                                                                         x86_64                                                                      1.0.2-3.el7                                                                      base_x86_64                                                                       14 k
 protobuf-compiler                                                                        x86_64                                                                      2.5.0-8.el7                                                                      base_x86_64                                                                      261 k
Installing for dependencies:
 protobuf                                                                                 x86_64                                                                      2.5.0-8.el7                                                                      base_x86_64                                                                      338 k

Transaction Summary
==============================================================================================================================================================================================================================================================================================================================================
Install  4 Packages (+1 Dependent package)

Total download size: 721 k
Installed size: 2.3 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): protobuf-c-1.0.2-3.el7.x86_64.rpm                                                                                                                                                                                                                                                                               |  28 kB  00:00:00     
(2/5): protobuf-c-compiler-1.0.2-3.el7.x86_64.rpm                                                                                                                                                                                                                                                                      |  80 kB  00:00:00     
(3/5): protobuf-2.5.0-8.el7.x86_64.rpm                                                                                                                                                                                                                                                                                 | 338 kB  00:00:00     
(4/5): protobuf-c-devel-1.0.2-3.el7.x86_64.rpm                                                                                                                                                                                                                                                                         |  14 kB  00:00:00     
(5/5): protobuf-compiler-2.5.0-8.el7.x86_64.rpm                                                                                                                                                                                                                                                                        | 261 kB  00:00:00     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                                                                                                         5.8 MB/s | 721 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : protobuf-2.5.0-8.el7.x86_64                                                                                                                                                                                                                                                                                                1/5 
  Installing : protobuf-c-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                              2/5 
  Installing : protobuf-compiler-2.5.0-8.el7.x86_64                                                                                                                                                                                                                                                                                       3/5 
  Installing : protobuf-c-compiler-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                     4/5 
  Installing : protobuf-c-devel-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                        5/5 
  Verifying  : protobuf-compiler-2.5.0-8.el7.x86_64                                                                                                                                                                                                                                                                                       1/5 
  Verifying  : protobuf-c-compiler-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                     2/5 
  Verifying  : protobuf-c-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                              3/5 
  Verifying  : protobuf-c-devel-1.0.2-3.el7.x86_64                                                                                                                                                                                                                                                                                        4/5 
  Verifying  : protobuf-2.5.0-8.el7.x86_64                                                                                                                                                                                                                                                                                                5/5 

Installed:
  protobuf-c.x86_64 0:1.0.2-3.el7                                              protobuf-c-compiler.x86_64 0:1.0.2-3.el7                                              protobuf-c-devel.x86_64 0:1.0.2-3.el7                                              protobuf-compiler.x86_64 0:2.5.0-8.el7                                             

Dependency Installed:
  protobuf.x86_64 0:2.5.0-8.el7                                                                                                                                                                                                                                                                                                               

Complete!

9、再次编译postgis-3.4.3

可以看到protobuf-c的问题解决了,但json-c和gdal没有解决

checking for JSONC... no
configure: WARNING: "Could not find json-c"
checking for PROTOBUFC... no
libprotobuf-c not found in pkg-config
checking protobuf-c/protobuf-c.h usability... yes
checking protobuf-c/protobuf-c.h presence... yes
checking for protobuf-c/protobuf-c.h... yes
checking for protobuf_c_message_init in -lprotobuf-c... yes
checking for protobuf_c_version in -lprotobuf-c... yes
checking protobuf-c version... 1003001
checking for protoc-c... /usr/bin/protoc-c
checking if gcc supports -Wall... yes
phony-revision: 
checking for PCRE2... no
checking for PCRE... yes
TOPOLOGY: Topology support requested
RASTER: Raster support requested
checking for gdal-config... no
checking GDAL version... not found
configure: error: gdal-config not found. Use --without-raster or try --with-gdalconfig=<path to gdal-config>

10、解决json-c的问题

[root@centos4 postgis-3.4.3]# yum list |grep json-c
Repository 'local' is missing name in configuration, using id
json-c.x86_64                              0.11-4.el7_0           @anaconda     
json-c.i686                                0.11-4.el7_0           base_x86_64   
json-c-devel.i686                          0.11-4.el7_0           base_x86_64   
json-c-devel.x86_64                        0.11-4.el7_0           base_x86_64   
json-c-doc.noarch                          0.11-4.el7_0           base_x86_64   
json-c12.x86_64                            0.12.1-4.el7           epel_x86_64   
json-c12-devel.x86_64                      0.12.1-4.el7           epel_x86_64   
json-c12-doc.noarch                        0.12.1-4.el7           epel_x86_64   
nodejs-strip-json-comments.noarch          1.0.2-2.el7            epel_x86_64   
rh-nodejs6-nodejs-strip-json-comments.noarch
rh-nodejs8-nodejs-strip-json-comments.noarch
[root@centos4 postgis-3.4.3]# yum install json-c* -y
Loaded plugins: fastestmirror
Repository 'local' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
Package json-c-0.11-4.el7_0.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package json-c-devel.x86_64 0:0.11-4.el7_0 will be installed
---> Package json-c-doc.noarch 0:0.11-4.el7_0 will be installed
---> Package json-c12.x86_64 0:0.12.1-4.el7 will be installed
---> Package json-c12-devel.x86_64 0:0.12.1-4.el7 will be installed
---> Package json-c12-doc.noarch 0:0.12.1-4.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================================================================================================================================================
 Package                                                                              Arch                                                                         Version                                                                            Repository                                                                         Size
==============================================================================================================================================================================================================================================================================================================================================
Installing:
 json-c-devel                                                                         x86_64                                                                       0.11-4.el7_0                                                                       base_x86_64                                                                        20 k
 json-c-doc                                                                           noarch                                                                       0.11-4.el7_0                                                                       base_x86_64                                                                        98 k
 json-c12                                                                             x86_64                                                                       0.12.1-4.el7                                                                       epel_x86_64                                                                        24 k
 json-c12-devel                                                                       x86_64                                                                       0.12.1-4.el7                                                                       epel_x86_64                                                                        24 k
 json-c12-doc                                                                         noarch                                                                       0.12.1-4.el7                                                                       epel_x86_64                                                                       114 k

Transaction Summary
==============================================================================================================================================================================================================================================================================================================================================
Install  5 Packages

Total download size: 280 k
Installed size: 1.5 M
Downloading packages:
(1/5): json-c-doc-0.11-4.el7_0.noarch.rpm                                                                                                                                                                                                                                                                              |  98 kB  00:00:00     
(2/5): json-c-devel-0.11-4.el7_0.x86_64.rpm                                                                                                                                                                                                                                                                            |  20 kB  00:00:00     
(3/5): json-c12-devel-0.12.1-4.el7.x86_64.rpm                                                                                                                                                                                                                                                                          |  24 kB  00:00:00     
(4/5): json-c12-0.12.1-4.el7.x86_64.rpm                                                                                                                                                                                                                                                                                |  24 kB  00:00:00     
(5/5): json-c12-doc-0.12.1-4.el7.noarch.rpm                                                                                                                                                                                                                                                                            | 114 kB  00:00:00     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                                                                                                                         3.4 MB/s | 280 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : json-c12-0.12.1-4.el7.x86_64                                                                                                                                                                                                                                                                                               1/5 
  Installing : json-c12-devel-0.12.1-4.el7.x86_64                                                                                                                                                                                                                                                                                         2/5 
  Installing : json-c-doc-0.11-4.el7_0.noarch                                                                                                                                                                                                                                                                                             3/5 
  Installing : json-c12-doc-0.12.1-4.el7.noarch                                                                                                                                                                                                                                                                                           4/5 
  Installing : json-c-devel-0.11-4.el7_0.x86_64                                                                                                                                                                                                                                                                                           5/5 
  Verifying  : json-c-devel-0.11-4.el7_0.x86_64                                                                                                                                                                                                                                                                                           1/5 
  Verifying  : json-c12-0.12.1-4.el7.x86_64                                                                                                                                                                                                                                                                                               2/5 
  Verifying  : json-c12-devel-0.12.1-4.el7.x86_64                                                                                                                                                                                                                                                                                         3/5 
  Verifying  : json-c12-doc-0.12.1-4.el7.noarch                                                                                                                                                                                                                                                                                           4/5 
  Verifying  : json-c-doc-0.11-4.el7_0.noarch                                                                                                                                                                                                                                                                                             5/5 

Installed:
  json-c-devel.x86_64 0:0.11-4.el7_0                                 json-c-doc.noarch 0:0.11-4.el7_0                                 json-c12.x86_64 0:0.12.1-4.el7                                 json-c12-devel.x86_64 0:0.12.1-4.el7                                 json-c12-doc.noarch 0:0.12.1-4.el7                                

Complete!

11、gdal的安装

根据最开始的文档,gdal需要使用高版本,刚好yum源里面有,但这里为了照顾很多不会配仓库的同学,这里还是编译安装gdal-3.3.3:

./configure --prefix=/usr/local/gdal --with-proj=/usr/proj63/

这里必须要指定--with-proj=/usr/proj63/ ,要不然找不到proj的类库,gdal安装比较费时间,大概半个多小时

12、再次预编译postgis-3.4.3

编译命令为:

./configure  --with-pgconfig=/usr/pgsql-12/bin/pg_config --with-protobufdir=/usr/local/protobuf-c --with-gdalconfig=/usr/local/gdal/bin/gdal-config 

日志为: 


  PostGIS is now configured for x86_64-unknown-linux-gnu

 -------------- Compiler Info ------------- 
  C compiler:           gcc -std=gnu99 -g -O2 -fno-math-errno -fno-signed-zeros -Wall
  C++ compiler (Wagyu): gcc -std=gnu99 -std=c++11 -x c++ 
  C++ compiler (FlatGeobuf): gcc -std=gnu99 -std=c++11 -x c++ 
  CPPFLAGS:              -I/usr/local/include -I/usr/proj63//include -I/usr/local/protobuf-c/include -I/usr/include/libxml2  -I/usr/include/json-c     -DNDEBUG 
  LDFLAGS:               -lm
  SQL preprocessor:     /opt/rh/devtoolset-7/root/usr/bin/cpp -traditional-cpp -w -P -Upixel -Ubool
  Archiver:             gcc-ar rs

 -------------- Additional Info ------------- 
  Interrupt Tests:   ENABLED

 -------------- Dependencies -------------- 
  GEOS config:          /usr/local/bin/geos-config
  GEOS version:         3.12.2
  GDAL config:          /usr/local/gdal/bin/gdal-config
  GDAL version:         3.3.3
  PostgreSQL config:    /usr/pgsql-12/bin/pg_config
  PostgreSQL version:   PostgreSQL 12.4
  PROJ4 version:        63
  Libxml2 config:       /usr/bin/xml2-config
  Libxml2 version:      2.9.1
  JSON-C support:       yes
  protobuf support:     yes
  protobuf-c version:   1003001
  PCRE support:         Version 1
  Perl:                 /usr/bin/perl

 --------------- Extensions --------------- 
  PostgreSQL EXTENSION support:       enabled
  PostGIS Raster:                     enabled
  PostGIS Topology:                   enabled
  SFCGAL support:                     disabled
  Address Standardizer support:       enabled

 -------- Documentation Generation -------- 
  xsltproc:             /usr/bin/xsltproc
  xsl style sheets:     
  dblatex:              
  convert:              
  mathml2.dtd:          http://www.w3.org/Math/DTD/mathml2/mathml2.dtd

configure: WARNING: 
configure: WARNING:  | You are building using --with-projdir. This option isn't standard and    |
configure: WARNING:  | might be incompatible with future releases of PROJ.                      |
configure: WARNING:  | You can instead adjust the PKG_CONFIG_PATH environment variable if you   |
configure: WARNING:  | installed software in a non-standard prefix.                             |
configure: WARNING:  | Alternatively, you may set the environment variables PROJ_CFLAGS and     |
configure: WARNING:  | PROJ_LIBS to avoid the need to call pkg-config.                          |

这里有一些告警,还是处理一些,告警说的是projdir是参数形式,这个不标准

export CPLUS_INCLUDE_PATH=/usr/proj63/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/usr/proj63/lib:/usr/local/protobuf-c/lib:/usr/local/protobuf/lib:$LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/proj63/lib/pkgconfig:/usr/local/protobuf/lib/pkgconfig:/usr/local/protobuf-c/lib/pkgconfig:$PKG_CONFIG_PATH

再次执行编译,发现还缺少最后一个依赖SFCGAL 

 PostGIS is now configured for x86_64-unknown-linux-gnu

 -------------- Compiler Info ------------- 
  C compiler:           gcc -std=gnu99 -g -O2 -fno-math-errno -fno-signed-zeros -Wall
  C++ compiler (Wagyu): gcc -std=gnu99 -std=c++11 -x c++ 
  C++ compiler (FlatGeobuf): gcc -std=gnu99 -std=c++11 -x c++ 
  CPPFLAGS:              -I/usr/local/include   -I/usr/local/protobuf-c/include -I/usr/include/libxml2  -I/usr/include/json-c     -DNDEBUG 
  LDFLAGS:               -lm
  SQL preprocessor:     /opt/rh/devtoolset-7/root/usr/bin/cpp -traditional-cpp -w -P -Upixel -Ubool
  Archiver:             gcc-ar rs

 -------------- Additional Info ------------- 
  Interrupt Tests:   ENABLED

 -------------- Dependencies -------------- 
  GEOS config:          /usr/local/bin/geos-config
  GEOS version:         3.12.2
  GDAL config:          /usr/local/gdal/bin/gdal-config
  GDAL version:         3.3.3
  PostgreSQL config:    /usr/pgsql-12/bin/pg_config
  PostgreSQL version:   PostgreSQL 12.4
  PROJ4 version:        63
  Libxml2 config:       /usr/bin/xml2-config
  Libxml2 version:      2.9.1
  JSON-C support:       yes
  protobuf support:     yes
  protobuf-c version:   1003001
  PCRE support:         Version 1
  Perl:                 /usr/bin/perl

 --------------- Extensions --------------- 
  PostgreSQL EXTENSION support:       enabled
  PostGIS Raster:                     enabled
  PostGIS Topology:                   enabled
  SFCGAL support:                     disabled
  Address Standardizer support:       enabled

 -------- Documentation Generation -------- 
  xsltproc:             /usr/bin/xsltproc
  xsl style sheets:     
  dblatex:              
  convert:              
  mathml2.dtd:          http://www.w3.org/Math/DTD/mathml2/mathml2.dtd

13、cgal和sfcgal编译安装

cgal和sfcgal是一对依赖,必须先cgal然后sfcgal

cgal的安装

cd cgal-releases-CGAL-4.13/
mkdir build
cd build
cmake3 ../
make &&make install
注意,这个不要尝试指定安装目录,一切默认即可!!!!

#这里需要注意,有三个依赖要安装,gmp-devel mpfr-devel boost*
-- GMP has been preconfigured:
--   UseGMP-file:      
--   GMP include:      /usr/include
--   GMP libraries:    /usr/lib64/libgmp.so
--   GMP definitions:  
-- USING GMP_VERSION = '6.0.0'
-- Preconfiguring library: MPFR ...
-- Found MPFR: /usr/lib64/libmpfr.so  
-- MPFR has been preconfigured:
--   UseMPFR-file:      
--   MPFR include:      /usr/include
--   MPFR libraries:    /usr/lib64/libmpfr.so
--   MPFR definitions:  
-- USING MPFR_VERSION = '3.1.1'
-- __cplusplus is 201402
--   --> Do not link with Boost.Thread
CMake Error at /usr/share/cmake3/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find Boost (missing: Boost_INCLUDE_DIR) (Required is at least
  version "1.48")
Call Stack (most recent call first):
  /usr/share/cmake3/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake3/Modules/FindBoost.cmake:2166 (find_package_handle_standard_args)
  Installation/cmake/modules/CGAL_SetupBoost.cmake:50 (find_package)
  Installation/cmake/modules/CGAL_SetupDependencies.cmake:85 (include)
  Installation/CMakeLists.txt:673 (include)


-- Configuring incomplete, errors occurred!
See also "/root/cgal-releases-CGAL-4.13/build/CMakeFiles/CMakeOutput.log".
boost需要版本1.48以上


sfcgal的安装

cd SFCGAL-1.3.6/
mkdir build
cd build
cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/sfcgal  ../
make &&make install
注意,要指定安装路径哦!!!不可以多线程!!!!!会报错 

14、最后一次预编译postgis-3.4.3并执行编译和编译安装

在预编译前,有一个程序需要链接到系统环境内:

ln -sf /usr/local/protobuf-c/bin/protoc-c /usr/bin/

预编译命令如下: 

./configure  --with-pgconfig=/usr/pgsql-12/bin/pg_config --with-protobufdir=/usr/local/protobuf-c --with-gdalconfig=/usr/local/gdal/bin/gdal-config  --with-sfcgal=/usr/local/sfcgal/bin/sfcgal-config --with-protobuf-lib=/usr/local/protobuf-c/lib/

在make前,还有两个lib库需要添加到ld里面

/usr/local/lib64/
/usr/local/sfcgal/lib64/

这些都做了后,make 和make install 一路顺畅

此时,可以进入启动的数据库内,激活插件了,但激活的时候遇到了这些问题:

postgres=# create extension postgis;
ERROR:  extension "postgis" already exists
postgres=# create extension postgis_
postgis_raster          postgis_sfcgal          postgis_tiger_geocoder  postgis_topology        
postgres=# create extension postgis_raster ;
ERROR:  could not load library "/usr/pgsql-12/lib/postgis_raster-3.so": libgdal.so.29: cannot open shared object file: No such file or directory

因此,ld里面在添加gdal的库:

cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib64/
/usr/local/sfcgal/lib64/
/usr/local/gdal/lib/

激活其它postgis的插件:

postgres=# create extension postg
postgis_sfcgal          postgis_tiger_geocoder  postgis_topology        postgres_fdw            
postgres=# create extension postgis_tiger_geocoder cascade ;
NOTICE:  installing required extension "fuzzystrmatch"
CREATE EXTENSION
postgres=# create extension postgis_topology ;
CREATE EXTENSION
postgres=# create extension postgis_sfcgal ;
CREATE EXTENSION
postgres=# \dx
                                        List of installed extensions
          Name          | Version |   Schema   |                        Description                         
------------------------+---------+------------+------------------------------------------------------------
 fuzzystrmatch          | 1.1     | public     | determine similarities and distance between strings
 plpgsql                | 1.0     | pg_catalog | PL/pgSQL procedural language
 postgis                | 3.4.3   | public     | PostGIS geometry and geography spatial types and functions
 postgis_raster         | 3.4.3   | public     | PostGIS raster types and functions
 postgis_sfcgal         | 3.4.3   | public     | PostGIS SFCGAL functions
 postgis_tiger_geocoder | 3.4.3   | tiger      | PostGIS tiger geocoder and reverse geocoder
 postgis_topology       | 3.4.3   | topology   | PostGIS topology spatial types and functions

🆗,postgis全系列插件圆满安装完成!!!!!!!!!!!!!!!

15、稍作总结

yum需要安装以下依赖:


yum install automake autoconf gtk2 gtk2-devel  libxml2 libxml2-devel  xz xz-devel libtool  gcc gcc-c++ make gettext sqlite sqlite-devel libffi-devel openjpeg openjpeg-devel gmp-devel mpfr-devel boost* json-c*

gcc版本需要7以上包括7,主要是geos编译需要高版本gcc,本次实验全程使用的gcc高版本7,boost版本要求是48以上

其次,需要python3.6和python3.6的类库也就是lib这些,由于本次实验postgresql数据库是使用yum安装的,因此,python3.6在本文没有体现太多

最后就是yum源的配置,至少需要base源,epel源,update源以及pgdg源,也就是说编译环境非常难配置,需要的依赖是非常多的

总之,postgis插件的安装是比较复杂的,复杂的原因是很多插件需要特定版本,并且依赖之间也是有依赖的,编译此插件需要极大的耐心!!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于JAVA中Scanner和sout读取超时问题

1.Scanner与System.out为什么慢 Scanner读取速度慢的原因&#xff1a; 在ACM模式下&#xff0c;输入数据和输出数据时&#xff0c;他会将数据放在一个文件里面 在new上一个Scanner时&#xff0c;去调用一个next&#xff08;&#xff09;方法&#xff0c;他会去访问IO设备&…

【mac开发入坑指南】能让你的终端好用一万倍的神仙组合iTerm2 + oh-my-zsh

介绍 iTerm2 iTerm2是默认终端的替代品&#xff0c;也是目前Mac系统下最好用的终端工具&#xff0c;集颜值和效率于一身。 Oh-My-Zsh Oh My Zsh 是一款社区驱动的命令行工具&#xff0c;正如它的主页上说的&#xff0c;Oh My Zsh 是一种生活方式。 它基于Zsh 命令行&#xff0c…

docker-文件复制(docker ps:用于在Docker主机和容器之间拷贝文件或目录)

文章目录 1、把宿主机的文件复制到容器内部1.1、查询 宿主机 root 下的文件1.2、docker cp /root/anaconda-ks.cfg spzx-redis:/root1.3、查看 spzx-redis 容器 中/root目录下是否有 anaconda-ks.cfg 文件 2、把容器中的文件 复制 到宿主机中2.1、查看 spzx-redis 容器 / 下的文…

怎么批量制作文本或链接静态码?批量静态码在线的生成技巧

怎么将文本或者链接做成静态二维码呢&#xff1f;有很多的场景都会使用静态二维码&#xff0c;在需要制作大量静态二维码时&#xff0c;有什么方法能够快速提高二维码制作效率呢&#xff1f;在网上能够找到在线二维码生成器的功能来快速生成二维码&#xff0c;下面通过这篇文章…

【shell脚本8】Shell脚本学习--其他

目录 ​编辑 Shell输入输出重定向 重定向深入讲解 Here Document Shell输入输出重定向 Unix 命令默认从标准输入设备(stdin)获取输入&#xff0c;将结果输出到标准输出设备(stdout)显示。一般情况下&#xff0c;标准输入设备就是键盘&#xff0c;标准输出设备就是终端&…

JAVA-StringBuilder和StringBuffer

一、认识String类 1.认识 String在Java中是字符串类型&#xff0c;但与其他类型不同。它是一个类&#xff0c;可以创建对象的类。与int、char等自待类型有些许不同。但它仍然是java提供的一种类型。 类中有4个属性&#xff0c;这里主要认识一下value属性。它是实际存放字符串…

AI 赋能大模型:从 ChatGPT 到国产大模型的角逐与发展契机

在当今科技飞速发展的时代&#xff0c;大模型作为人工智能领域的关键技术&#xff0c;正引发着深刻的变革。它们在自然语言处理、计算机视觉、语音识别等众多领域展现出了惊人的潜力&#xff0c;为各行各业带来了前所未有的机遇和挑战。本文将深入剖析大模型的技术原理、市场态…

字符串的join和os.path.join()

>>> key "".join("I love China.")>>> keyI love China.>>> key.join("--xwf")-I love China.-I love China.xI love China.wI love China.f为什么执行key.join("--xwf")的结果不是“I love China.--xwf”…

鄂尔多斯市鄂托克旗巴音乌苏六保煤矿5MW分布式光伏项目案例分析

摘 要&#xff1a;分布式光伏发电利用太阳能光伏板&#xff0c;分散布置在各区域&#xff0c;通过小规模、模块化并网或独立使用。其特点为就近发电、并网、转换和使用。技术进步和政策支持降低了光伏组件成本&#xff0c;推动了分布式光伏监控系统在多个领域的广泛应用。在全球…

【学习笔记】UWB技术定位原理

UWB技术还没有完全普及&#xff0c;却在慢慢兴起&#xff0c;一旦爆发&#xff0c;势不可挡也。 01-什么是UWB&#xff1f; UWB&#xff08;Ultra Wide Band&#xff09;是一种无载波通信技术&#xff0c;UWB不使用载波&#xff0c;而是使用短的能量脉冲序列&#xff0c;并通…

TikTok多语言商城系统源码+落地页 附搭建教程

TikTok多语言商城系统源码落地页 附搭建教程 环境 nginx php7.4.33 redis5.0.8 Memcached 1.6.6 mysql5.6 phpMyAdmin 伪静态 location / { try_files $uri $uri/ /index.php?$query_string; } 源码下载&#xff1a;https://download.csdn.net/download/m0_660477…

CVPR2021 安全AI挑战者计划第六期赛道一第二名方案分享 (UM-SIAT队)

关联比赛: CVPR2021 安全AI挑战者计划第六期&#xff1a;防御模型的白盒对抗攻击 CVPR2021 安全AI挑战者计划第六期赛道一第二名方案分享 &#xff08;UM-SIAT队&#xff09; 1.赛题简介 1.比赛通过15个防御模型测试攻击算法&#xff0c;其中包括13个在CIFAR-10上训练的模型…

单刀单掷(SPST)及单刀双掷(SPDT)模拟开关

单刀单掷(SPST)及单刀双掷(SPDT)模拟开关是对继电器元件的一种模拟简化, 本质上还是一种用开关控制的开关. 我们先从单刀双掷(SPDT)模拟开关与继电器的一个对比中了解其特性. 单刀双掷(SPDT)模拟开关 通过菜单 绘制--有源集成电路--添加模拟开关(SPDT) 可以添加一个单刀双掷…

我与Linux的爱恋:进程创建|终止

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 ​ 文章目录 一、进程创建**fork函数**写时拷贝 二、进程终止进程退出的常见方法 一、进程创建 fork函数 在Linux中fork函数是非常重要的函数&#xff0c;它从已存在进程…

黑马智数Day4-2

渲染基础Table列表 封装获取企业列表接口 export function getEnterpriseListAPI(params) {return request({url: /park/enterprise,params}) } 组件中获取数据 <script> import { getEnterpriseListAPI } from /apis/enterprise export default {name: Building,dat…

C++ | Leetcode C++题解之第435题无重叠区间

题目&#xff1a; 题解&#xff1a; class Solution { public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) {return 0;}sort(intervals.begin(), intervals.end(), [](const auto& u, const auto& v) {retur…

直播平台美颜功能开发方案:基于视频美颜SDK的集成详解

本篇文章&#xff0c;小编将于大家共同探究视频美颜SDK的美颜功能开发方案&#xff0c;帮助开发者深入理解其集成过程及关键技术。 一、美颜功能的重要性 在竞争激烈的直播市场中&#xff0c;直播平台如何提升用户体验至关重要。美颜功能不仅能够改善主播的形象&#xff0c;提…

桌面专业版【查看MAC和ip地址】

UOS统信查看MAC和ip地址的方法。 文章目录 查看方法一、图形化界面查看二、命令查看 查看方法 一、图形化界面查看 打开控制中心-网络-网络详情中-Mac地址就是您电脑的mac地址&#xff0c;IPV4就是您电脑的ip地址。 二、命令查看 桌面右键选择在终端中打开&#xff0c;输入i…

9.25度小满一面

1.map的底层 2.unorder_map哈希表有自己实现过吗&#xff1f;哈希冲突 3.poll和epoll和select的优缺点、 4.线程同步机制是用来做什么的? 5.五子棋项目问题-- 算法题: 6.LeetCode.重排链表 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0…

Linux:地址分区——常量区、全局区、堆区、栈区

平台&#xff1a;Linux。本次实验是基于Linux平台&#xff0c;结论和其他平台大体相同&#xff0c;如有出入&#xff0c;也属于正常现象。实验内容&#xff1a;大致验证地址空间的各个分区。 结论如图&#xff1a; 结论说明&#xff0c;由低地址向高地址&#xff1a; 代码区&a…