
# 获取发布包、依赖库和头文件
#### 获取驱动包
下载[表1]中的驱动包和驱动包校验包。
 表1驱动包下载列表 
| 版本        | 下载地址                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|
| V2.0-10.x | [驱动包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/DBS-GaussDB-driver/1782715650051/DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz) [驱动包校验包](https://dbs-download.obs.cn-north-1.myhuaweicloud.com/DBS-GaussDB-driver/1782715650051/DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz.sha256) |
   
为了防止软件包在传递过程或存储期间被恶意篡改，下载软件包时需下载对应的校验包对软件包进行校验，校验方法如下：
- Linux操作系统软件包完整性校验：
  1. 上传软件包和软件包校验包到虚拟机的同一目录下。
  
  2. 执行如下命令，校验软件包完整性。
     ```
     F=$(echo DBS-GaussDB-driver*.tar.gz);echo "$(awk '{print $1}' "$F.sha256")  $F" | sha256sum -c -
     ```
     如果回显OK，则校验通过。例如：
     ```
     DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz: OK
     ```
     
   

- Windows操作系统软件包完整性校验：
  1. 使用快捷键"Win+R"打开"运行"窗口。 在"打开"栏，输入"cmd"，按"Enter"回车，打开命令行页面。
  
  2. 执行以下命令，获取驱动包的Hash值。
     certutil -hashfile *{* *驱动包本地目录* *}* \\*{驱动包名}* sha256
     - {*驱动包本地目录*}：请根据实际下载目录进行替换。例如：C:\\Users
     
     - {*驱动包*名}：请根据实际下载的驱动包名进行替换。例如：DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz
     
     
     示例：certutil -hashfile *C:\\Users\\DBS-GaussDB-driver_507.0_20260629130806.133858239.tar.gz sha256*
     
  
  3. 将[2]获取到的Hash值和[表1]中获取到的驱动包校验包的Hash值进行比较。
     - 若一致则通过校验。
     
     - 若不一致，请重新下载驱动包，重复[1]\~[3]进行校验。
      
   
 
libpq依赖的库和头文件从驱动包中获取，驱动包中提供多种数据库内核操作系统支持，用户可根据实际使用的数据库内核操作系统信息定位对应文件。驱动包的文件层级关系参考以下结构：/Distributed/驱动类型/操作系统信息（例如：Euler2.10_X86_64）。该文件中包含2个压缩文件：GaussDB-Kernel_数据库版本号_操作系统信息_64bit_Libpq.tar.gz、GaussDB-Kernel_数据库版本号_操作系统信息_64bit_Libpq_Static.tar.gz。
Libpq_Static驱动包与Libpq驱动包在功能上一致，用户可根据实际应用场景选择适合的libpq.so库，区别在于：
- Libpq驱动包中的libpq.so动态链接openssl库(libssl.so、libcrypto.so)。
- Libpq_Static驱动包中的libpq.so静态链接openssl库，以解决在部分客户场景中与操作系统openssl版本不一致导致冲突的问题。
将以上压缩包解压后即可得到所需要的include、lib文件。其中include文件夹中的头文件为所需的头文件，lib文件夹中为所需的libpq库文件。使用libpq的程序必须包括头文件"libpq-fe.h"并且必须与lib目录下的libpq库进行连接。
![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
除"libpq-fe.h"外，include文件夹下默认还存在头文件"postgres_ext.h"、"gs_thread.h"、"gs_threadlocal.h"，这三个头文件是"libpq-fe.h"的依赖文件。
libpq开发需要在Linux操作系统下进行。推荐使用以下编译环境：
- 操作系统：推荐与数据库内核版本保持一致。
- 编译器：推荐GCC 7.3或更高版本。
- 构建工具：make、Cmake（推荐使用CMake 3.10及以上版本进行构建）。
在开始编译前，请确保上述工具已正确安装并可通过命令行正常调用。
