如何在不调用其中一个函数的情况下 link C 库?
How to link a C library without calling one of its functions?
我想 link 和 -lm
。现在,我是这样做的:
let _link_lm = f64::sin(3.0);
我试着把这个放在 .cargo/config
:
[build]
rustflags = ["-C", "link-args=-lm"]
这不是动态 link 库。
此外,在构建脚本中使用 cargo:rustc-link-lib=m
与调用 cargo rustc -- -lm
相同,但两者均无效。
我检查库是否未 link 编辑 ldd
。
它对 link 库很重要,因为这是用于 JIT 编译器的,它可以通过使用 dlsym
.
获取这些函数来调用它们
如何在不调用其中一个函数的情况下 link 访问该库?
事实证明 rustc
使用 -Wl,--as-needed
调用链接器,所以我的解决方案是禁用此选项:
[build]
rustflags = ["-C", "link-arg=-Wl,--no-as-needed", "-C", "link-arg=-lm"]
我想 link 和 -lm
。现在,我是这样做的:
let _link_lm = f64::sin(3.0);
我试着把这个放在 .cargo/config
:
[build]
rustflags = ["-C", "link-args=-lm"]
这不是动态 link 库。
此外,在构建脚本中使用 cargo:rustc-link-lib=m
与调用 cargo rustc -- -lm
相同,但两者均无效。
我检查库是否未 link 编辑 ldd
。
它对 link 库很重要,因为这是用于 JIT 编译器的,它可以通过使用 dlsym
.
如何在不调用其中一个函数的情况下 link 访问该库?
事实证明 rustc
使用 -Wl,--as-needed
调用链接器,所以我的解决方案是禁用此选项:
[build]
rustflags = ["-C", "link-arg=-Wl,--no-as-needed", "-C", "link-arg=-lm"]