4个版本 (破坏性更新)
0.8.0 | 2023年3月12日 |
---|---|
0.7.0 | 2022年7月8日 |
0.6.0 | 2021年3月29日 |
0.5.0 | 2021年3月27日 |
#2483 in 数据库接口
每月下载量 2,900
在 4 个crates中使用 (通过 libpq)
11KB
177 行
pq-sys
为libpq自动生成的Rust绑定
构建
此存储库包含直接、一对一映射到libpq-fe.h
和postgres_ext.h
中提供的C函数。此库期望系统上已安装libpq。
crates的构建脚本将尝试使用以下方法找到libpq的库路径
- 首先,如果环境变量
PQ_LIB_DIR
已设置,它将使用其值 - 如果环境变量未设置,它将尝试使用pkg-config查找它。所有配置选项,如
PKG_CONFIG_ALLOW_CROSS
、PKG_CONFIG_ALL_STATIC
等,都适用于该crates的pkg-config。 - 对于MSVC ABI构建,构建脚本将尝试使用从vcpkg安装的库,如果有可用的。您可能需要设置VCPKG_ROOT(或运行
vcpkg integrate install
)并运行vcpkg install libpq:x64-windows
。 - 如果它仍然找不到库,它将调用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不同的libjpeg.dylib
的目录造成的。这通常是由于通过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,版本 2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可协议定义的,您提交的任何旨在包含在作品中的贡献,将按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~0–1.9MB
~37K SLoC