4 个版本 (重大更改)
0.12.0 | 2023年11月1日 |
---|---|
0.11.0 | 2022年12月24日 |
0.9.0 | 2021年7月7日 |
0.8.0 | 2021年5月27日 |
#564 in 科学
每月27次下载
用于 libceed
2MB
27K SLoC
libceed-sys: 到libCEED的不安全绑定
这是对libCEED C接口的低级别(不安全)Rust绑定的文档。有关使用信息,请参阅libCEED 用户手册。请注意,大多数Rust用户将更喜欢libceed
crate中的高级(安全)Rust接口。
libCEED是ECP co-design中心为高效的高阶离散化方法开发的低级别API,这些方法由有效的大规模离散化(CEED)中心开发。虽然我们的重点是高阶有限元,但该方法主要是代数的,因此适用于其他因式分解形式的离散化。
使用方法
要在Rust包中使用低级别libCEED绑定,可以使用以下Cargo.toml
。
[dependencies]
libceed-sys = "0.12.0"
对于libCEED Rust绑定的开发版本,可以使用以下Cargo.toml
。
[dependencies]
libceed-sys = { git = "https://github.com/CEED/libCEED", branch = "main" }
支持的功能
static
(默认):链接到静态libceed.asystem
:从系统目录中使用libceed(否则,从源代码安装)
开发
要开发libCEED,请在rust/libceed-sys
目录中使用cargo build
来安装本地副本并构建绑定。
如果您需要C项目的自定义标志,我们建议使用make -C c-src configure
在c-src/config.mk
中缓存参数。如果在cargo build
时该文件存在,则编辑将提示重新编译绑定。
共享库
如果正在开发libCEED C源代码并同时测试多个语言绑定,通过禁用static
功能,可以在编辑/编译/测试循环中节省几秒钟。
export LD_LIBRARY_PATH=$CEED_DIR/lib
export PKG_CONFIG_PATH=$CEED_DIR/lib/pkgconfig
无需系统
如果您禁用了static
功能,并且没有使用来自标准路径/可以通过pkg-config找到的位置的系统版本,那么您需要设置LD_LIBRARY_PATH
到适当的目录,以便doctests能够找到它。这可能看起来像这样:
export LD_LIBRARY_PATH=$CEED_DIR/target/debug/build/libceed-sys-d1ea22c6e1ad3f23/out/lib
其中精确的哈希值在cargo build --verbose
时打印出来,或者您可以使用find target -name libceed.so
找到它。这种开发模式比默认模式(使用静态库)更脆弱。
请注意,如果这个问题得到解决,那么LD_LIBRARY_PATH
的解决方案将变得不再必要——它目前是关闭的,但问题仍然存在。
许可证:BSD-2-Clause
贡献
依赖项
~0–1.9MB
~37K SLoC