8 个版本
0.3.0 | 2024 年 6 月 11 日 |
---|---|
0.2.0 | 2024 年 5 月 17 日 |
0.1.6 | 2024 年 4 月 12 日 |
0.1.2 | 2024 年 3 月 8 日 |
0.1.0 | 2024 年 1 月 19 日 |
1922 在 数据库接口 中
12,203 每月下载量
用于 3 个 Crates(2 个直接使用)
2MB
37K SLoC
pq-sys
libpq 自动生成的 Rust 绑定
构建
此仓库包含与 libpq-fe.h
和 postgres_ext.h
中提供的 C 函数的直接、一对一映射。此库期望系统上已安装 libpq。
Crates 的构建脚本将尝试使用以下方法查找 libpq 的 lib 路径
- 首先,它会查找格式为
PQ_LIB_DIR_{TARGET}
的环境变量,其中{TARGET}
将被用于交叉编译的 Target 环境变量替换 - 其次,如果设置了环境变量
PQ_LIB_DIR
,则使用其值 - 如果没有设置环境变量,它将尝试使用 pkg-config 来定位它。所有 pkg-config Crates 的配置选项,如
PKG_CONFIG_ALLOW_CROSS
、PKG_CONFIG_ALL_STATIC
等,都将适用。 - 然后,对于 MSVC ABI 构建,如果可用,构建脚本将尝试使用 vcpkg 安装中的库。您可能需要设置 VCPKG_ROOT(或运行
vcpkg integrate install
),设置 VCPKGRS_DYNAMIC=1,并运行vcpkg install libpq:x64-windows
。有关更多信息,请参阅 vcpkg Crates 的文档。 - 如果它仍然无法找到库,它将调用 Postgres 命令
pg_config --libdir
构建脚本指示 Cargo 在设置了环境变量 PQ_LIB_STATIC
的情况下将库静态链接。如果针对 musl 目标,这可能很有用。如果正在使用 pkg-config,则其配置选项将适用。
常见问题解答
我在 macOS 上看到 dyld: Symbol not found __cg_jpeg_resync_to_restart
这是由于 pg_config --libdir
的输出是一个也包含 libjpeg.dylib
的目录,该目录与系统 libjpeg 不同造成的。这通常是由于通过 homebrew 安装 postgres 或使用 postgresapp.com 造成的。
如果您通过homebrew安装,除非您提供了 features = ["pkg-config"]
,否则您不应该看到此问题。您可以通过导出 PQ_LIB_DIR="$(brew --prefix postgres)/lib"
来解决这个问题。
如果您使用postgresapp.com安装了postgresql,您将无法使用 cargo run
或 cargo test
运行您的二进制文件。您可以通过 cargo build
手动编译二进制文件,然后运行 /target/debug/yourapp
。您还可以手动创建一个仅包含指向 libpq.dylib
的符号链接的目录,然后导出 PQ_LIB_DIR
到该目录。建议您不要使用postgresapp.com。
许可协议
根据以下协议之一授权:
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义,您有意提交的任何贡献,都应按上述方式双重许可,没有任何额外的条款或条件。