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

BSD-2-Clause

2MB
27K SLoC

C 17K SLoC // 0.3% comments C++ 10K SLoC // 0.2% comments CUDA 135 SLoC // 0.3% comments Rust 80 SLoC // 0.3% comments

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.a
  • system:从系统目录中使用libceed(否则,从源代码安装)

开发

要开发libCEED,请在rust/libceed-sys目录中使用cargo build来安装本地副本并构建绑定。

如果您需要C项目的自定义标志,我们建议使用make -C c-src configurec-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

贡献

libceed-sys库在libCEED仓库中开发。有关详细信息,请参阅贡献指南

依赖项

~0–1.9MB
~37K SLoC