我有一个共享库,我想动态链接到几个单独的二进制货物应用程序.我使用-- -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没有效果.
使用Cargo,我可以设置项目的开发设置以使用并行代码生成:
[profile.dev]
codegen-units = 8
Run Code Online (Sandbox Code Playgroud)
根据文档,应该可以~/.cargo/config将此设置应用于所有项目.这对我不起作用:似乎.cargo/config根本没有使用该文件.有没有办法将这样的配置应用到我编译的每个项目中?
我正在编写一个针对使用锌的STM32F407处理器的Rust程序.我希望能够生成链接器映射文件.我发现我可以将以下内容放在我的主菜中,这给了我想要的结果:
#![feature(link_args)]
#[link_args = "-Wl,-Map=blink_stm32f4.map"]
extern {}
Run Code Online (Sandbox Code Playgroud)
但是,文档link_args建议不要使用此方法.
还有哪些方法可以让链接器生成映射文件?
如果我这样指定panic,它适用于所有目标:
[profile.release]
panic = "abort"
Run Code Online (Sandbox Code Playgroud)
我只想panic = "abort"为target=arm-linux-androideabi.