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-sys
crate添加到您的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或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可 (LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则您有意提交给作品以供包含的贡献,根据Apache-2.0许可证定义,应以上述双重许可,没有其他条款或条件。