在作死的时候(作死打开-lto
),我不能正常编译gmp-mpfr-sys
(未测试关掉lto会怎么样,毕竟编译这玩意要好久)
用cargo run --release --verbose
检查,发现:
rustc --crate-name fermat --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C panic=abort -C lto -C codegen-units=1 -C metadata=c23e76141d72d005 -C extra-filename=-c23e76141d72d005 --out-dir /me/fermat/target/release/deps -L dependency=/me/fermat/target/release/deps --extern bigint=/me/fermat/target/release/deps/libbigint-ab706995e0461ab2.rlib --extern num_bigint=/me/fermat/target/release/deps/libnum_bigint-e58c3b89843e0a6b.rlib --extern ramp=/me/fermat/target/release/deps/libramp-1ec3a2ae2a63bea3.rlib --extern rug=/me/fermat/target/release/deps/librug-e4c2e85ed5e6ee36.rlib --extern gmp=/me/fermat/target/release/deps/libgmp-b99a780b50358d93.rlib -C target-cpu=native -L native=/me/fermat/target/release/build/gmp-mpfr-sys-f485bf457c722ab9/out/lib
这个命令出了问题
经测试,如果在命令末尾加入-lgmp
,则程序可以正常运行
想问一下,要怎样修改程序(build.rs
或者Cargo.toml
),才能保证执行cargo run --release
的时候,rustc
在执行时候自动加上-lgmp
呢?
(上次本想试试rust+pytorch,似乎也是遇到了同样的问题,不确定这是我设置出了BUG还是别的原因)
(我的CFLAGS直接设置成了-O2 -march=native -pipe -flto
,或许不应该写-flto
的)
在网上搜索了一遍,学会了dirty fix:
$ cat build.rs
fn main(){
println!("cargo:rustc-flags=-lgmp")
}
$ cargo run --release
# 成功运行
1
共 2 条评论, 1 页
评论区
写评论我试了一下,把build.rs删掉,发现这样似乎不行
--
👇
12101111: export LDFLAGS=-lgmp
export LDFLAGS=-lgmp