我正在使用Rust,bindgen和一个构建脚本来对库进行一些FFI绑定。
该库是使用OpenMP构建的,因此在链接它时,通常会将-fopenmp标志传递给编译器。
build.rs当Cargo构建库时,如何设置此标志?
当前,使用Cargo构建失败,而failing命令类似:
cc -Wl,--as-needed -Wl,-z,noexecstack -m64 -l gomp -l stdc++
...skipping dozens of paths/files...
-Wl,-Bdynamic -l dl -l rt -l pthread -l gcc_s -l c -l m -l rt -l pthread -l util
Run Code Online (Sandbox Code Playgroud)
失败并显示数百个undefined reference to 'GOMP_parallel_end'错误。
使用-fopenmp手动添加的标志重新运行上面生成的命令将成功。
我可以RUSTFLAGS='-C link-args=-fopenmp'在编译之前使用指定标志,但是有没有一种从内部指定标志的方法build.rs?
ecs*_*rse 29
该功能已添加到 Cargo 中并在 Cargo 1.56 中稳定下来。
build.rs链接器参数可以这样指定:
// Pass `-fopenmp` to the linker.
println!("cargo:rustc-link-arg=-fopenmp");
Run Code Online (Sandbox Code Playgroud)
你不能。相反,您可以使用Cargo 配置文件。
[build]
rustflags = ["-C", "link-args=-fsome-artisanal-option"]
Run Code Online (Sandbox Code Playgroud)
[build]
rustflags = ["-C", "link-args=-fsome-artisanal-option"]
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
1986 次 |
| 最近记录: |