相关疑难解决方法(0)

将Rust应用程序与不在运行时链接程序搜索路径中的动态库链接

我有一个共享库,我想动态链接到几个单独的二进制货物应用程序.我使用-- -L /path/to/dir格式在链接器中包含它的位置,并且应用程序正确编译,我期望的二进制大小显着减少.但是,在使用时检查生成的二进制文件时ldd,我收到一条消息,指出无法找到该库:

casey@Gilthar-II:~/bot4/backtester/target/release$ ldd backtester 
    linux-vdso.so.1 =>  (0x00007ffc642f7000)
    libalgobot_util.so => not found
Run Code Online (Sandbox Code Playgroud)

如果我将库添加到/lib/x86_64-linux-gnu目录,应用程序运行没有问题.

有没有办法让Rust在与二进制文件相同的目录中查找.so文件,或者在二进制文件目录中的lib目录中查找要在运行时加载的文件?如果那是不可能的,有没有办法至少让Rust插入它所链接的库的绝对路径?

我试过设置rpath = true没有效果.

dynamic-linking ldd dynamic-library rust rust-cargo

6
推荐指数
2
解决办法
4208
查看次数

如何全局配置货物配置文件选项?

使用Cargo,我可以设置项目的开发设置以使用并行代码生成:

[profile.dev]
codegen-units = 8
Run Code Online (Sandbox Code Playgroud)

根据文档,应该可以~/.cargo/config将此设置应用于所有项目.这对我不起作用:似乎.cargo/config根本没有使用该文件.有没有办法将这样的配置应用到我编译的每个项目中?

rust rust-cargo

5
推荐指数
1
解决办法
731
查看次数

如何使用Cargo使链接器生成映射文件

我正在编写一个针对使用锌的STM32F407处理器的Rust程序.我希望能够生成链接器映射文件.我发现我可以将以下内容放在我的主菜中,这给了我想要的结果:

#![feature(link_args)]
#[link_args = "-Wl,-Map=blink_stm32f4.map"]
extern {}
Run Code Online (Sandbox Code Playgroud)

但是,文档link_args建议不要使用此方法.

还有哪些方法可以让链接器生成映射文件?

linker rust rust-cargo

5
推荐指数
1
解决办法
770
查看次数

是否可以为特定目标指定`panic = "abort"`?

如果我这样指定panic,它适用于所有目标:

[profile.release]
panic = "abort"
Run Code Online (Sandbox Code Playgroud)

我只想panic = "abort"target=arm-linux-androideabi.

rust rust-cargo

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