我正在尝试编译一个使用 zlib 的演示,我认为我已经正确设置了 LD_LIBRARY_PATH,但它不适用于 -lz 标志,您能帮我找出问题所在吗?
lisanhu@lisanhu-XPS-15-9550:kseq$ echo $LD_LIBRARY_PATH
/home/lisanhu/mine/repos/zlib/output/lib
lisanhu@lisanhu-XPS-15-9550:kseq$ make
gcc -g -O2 kseq_test.c -o kseq_test -lz
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 1
lisanhu@lisanhu-XPS-15-9550:kseq$ gcc -static -o kseq_test kseq_test.o -lz -L/home/lisanhu/mine/repos/zlib/output/lib
lisanhu@lisanhu-XPS-15-9550:kseq$
Run Code Online (Sandbox Code Playgroud)
问题是,如果我使用-L强制搜索文件夹,它可以工作,如果我将该文件夹放在 LD_LIBRARY_PATH 中,它就不起作用。我很确定我已经使用过export LD_LIBRARY_PATH,但仍然不起作用。
这很烦人,因为如果我需要编译其他需要它的代码,那么设置环境变量来搜索库会更容易。
- - - - - - - 更新 - - - - - -
在另一台服务器上我尝试了这个并且运行顺利
[lisanhu@farber tmp]$ export LD_LIBRARY_PATH=/home/1677/mine/repos/zlib/zlib-1.2.8
[lisanhu@farber tmp]$ …Run Code Online (Sandbox Code Playgroud) 我在这个Rust Playground 的示例代码中收到此错误
Compiling playground v0.0.1 (/playground)
error[E0597]: `text` does not live long enough
--> src/main.rs:34:38
|
34 | let item = NotLongEnough { text: &text };
| ^^^^^ borrowed value does not live long enough
35 | let mut wrapper = Container { buf: Vec::new() };
36 | wrapper.add(Box::new(item));
| -------------- cast requires that `text` is borrowed for `'static`
...
40 | }
| - `text` dropped here while still borrowed
error: aborting due to previous error
For …Run Code Online (Sandbox Code Playgroud) 代码很幼稚:
use std::time;
fn main() {
const NUM_LOOP: u64 = std::u64::MAX;
let mut sum = 0u64;
let now = time::Instant::now();
for i in 0..NUM_LOOP {
sum += i;
}
let d = now.elapsed();
println!("{}", sum);
println!("loop: {}.{:09}s", d.as_secs(), d.subsec_nanos());
}
Run Code Online (Sandbox Code Playgroud)
输出是:
$ ./test.rs.out
9223372036854775809
loop: 0.000000060s
$ ./test.rs.out
9223372036854775809
loop: 0.000000052s
$ ./test.rs.out
9223372036854775809
loop: 0.000000045s
$ ./test.rs.out
9223372036854775809
loop: 0.000000041s
$ ./test.rs.out
9223372036854775809
loop: 0.000000046s
$ ./test.rs.out
9223372036854775809
loop: 0.000000047s
$ ./test.rs.out
9223372036854775809
loop: 0.000000045s
Run Code Online (Sandbox Code Playgroud)
该计划几乎立即结束.我还在C中使用for循环编写了一个等效代码,但它运行了很长时间.我想知道是什么让Rust代码如此之快.
C代码:
#include <stdint.h> …Run Code Online (Sandbox Code Playgroud)