24个版本
使用旧的Rust 2015
| 0.6.1 | 2024年6月11日 |
|---|---|
| 0.5.0 | 2024年1月19日 |
| 0.4.8 | 2023年4月18日 |
| 0.4.7 | 2022年7月18日 |
| 0.2.0 | 2015年11月21日 |
在数据库接口中排名29
每月下载量265,409
用于252个crate(3个直接使用)
680KB
16K SLoC
pq-sys
libpq的自动生成的Rust绑定 https://docs.rs/pq-sys/latest/pq_sys/
构建
此存储库包含与 libpq-fe.h 和 postgres_ext.h 中提供的C函数的直接、一对一映射。此库期望系统上已安装libpq。
crate的构建脚本将尝试使用以下方法找到libpq的路径
- 首先,它将查找格式为
PQ_LIB_DIR_{TARGET}的环境变量,其中{TARGET}将被为交叉编译设置的Target环境变量替换 - 其次,如果设置了环境变量
PQ_LIB_DIR,则将使用其值 - 如果未设置环境变量,则尝试使用pkg-config查找它。所有配置选项,如
PKG_CONFIG_ALLOW_CROSS、PKG_CONFIG_ALL_STATIC等,均适用于 pkg-config crate。 - 然后,对于MSVC ABI构建,如果可用,构建脚本将尝试使用来自 vcpkg 安装程序的库。您可能需要设置VCPKG_ROOT(或运行
vcpkg integrate install),设置VCPKGRS_DYNAMIC=1,并运行vcpkg install libpq:x64-windows。有关更多信息,请参阅vcpkg crate的文档。 - 如果仍然无法找到库,则将调用Postgres命令
pg_config --libdir
构建脚本指示Cargo在设置环境变量PQ_LIB_STATIC时将库静态链接。如果目标是musl,这可能会很有用。如果使用pkg-config,它的配置选项将生效。
特性
buildtime_bindgen:在构建时运行bindgen以使用已安装的头部生成绑定。与bundled特性不兼容。bundled:从源代码构建libpq捆绑版本。要使用捆绑的openssl版本,将带有vendored特性的openssl-syscrate添加到您的crate依赖项中[dependencies] openssl-sys = { version = "0.9.93", features = ["vendored"] }
常见问题解答
我在macOS上看到dyld: 符号未找到 __cg_jpeg_resync_to_restart
这是由于pg_config - -libdir的输出是一个包含与系统libjpeg不同的libjpeg.dylib的目录。这通常是由于通过homebrew安装PostgreSQL或使用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,版本2.0,(LICENSE-APACHE或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT或https://open-source.org.cn/licenses/MIT)
。
贡献
除非您明确声明,否则您有意提交给作品以供包含的贡献,根据Apache-2.0许可证定义,应以上述双重许可,没有其他条款或条件。