小编San*_* Li的帖子

LD_LIBRARY_PATH 不起作用

我正在尝试编译一个使用 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)

c linker gcc zlib

4
推荐指数
2
解决办法
1万
查看次数

借用的值的生命周期不够长,需要静态生命周期

我在这个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)

lifetime rust

3
推荐指数
1
解决办法
1878
查看次数

什么优化技术应用于Rust代码,总结了一个简单的算术序列?

代码很幼稚:

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)

c rust llvm-codegen

1
推荐指数
3
解决办法
262
查看次数

标签 统计

c ×2

rust ×2

gcc ×1

lifetime ×1

linker ×1

llvm-codegen ×1

zlib ×1