- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想找到在Rust构建中使用的libc.so文件,以便我可以使用--version
进行查询。 (一些libcs通过C宏公开其版本信息,因此,它们的另一种选择是在构建脚本中使用cc
条板箱。但其他诸如musl则不这样做。)
我可以弄清楚一个使用rust 的二进制文件或库将链接到哪个libstd-*.so
文件。当将此libstd.so
与主机的libc链接时,在其上运行ldd
将显示libc.so
。但是,当主机系统使用glibc且目标环境是musl时,这将不起作用(“无效的ELF header ”)。除了ldd
之外,我还可以在readelf -d
上使用objdump -p
或libstd.so
。但是这些仅显示其使用的libc.so
文件的文件名,而不显示其完整路径。而且libc.so
不在LD_LIBRARY_PATH
中的任何目录中。 (我确实知道它在我自己的系统上的位置,但是我试图以编程方式在任意系统上找到它。)
运行ldconfig -p
仅为我提供有关主机系统的libc的信息。
如果有一个与gcc和clang的-print-file-name=libc.so
等效的rustc,那就太好了,这样我就可以做类似rustc --target=$TARGET --print-file-name=libc.so
的事情。
关于如何获取此信息的其他想法?
最佳答案
您可以像这样将pass linker arguments转换为rustc
:
rustc -C link-args=...
libc.so
,我相信以下命令就足够了:
rustc -C link-args=-Wl,-t ...
-t
--trace
Print the names of the input files as ld processes them. ...
rustc
“吃掉了”链接器的输出。
echo 'fn main() { println!("")}' | rustc -C link-args=-Wl,-Map=map.out -o foo -
grep 'libc\.so' map.out
libc.so.6 /usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-f25e49a311b0f577.rlib(std-f25e49a311b0f577.std.cy8lhng1-cgu.2.rcgu.o) (setuid@@GLIBC_2.2.5)
LOAD /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/libc.so
LOAD /lib/x86_64-linux-gnu/libc.so.6
关于rust - 如何找到 `rustc --target=$TARGET`链接到哪个libc.so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61423973/
我正在尝试从源代码构建 Rust。从 stage0.txt 我可以看到使用的 rustc 是 beta-2016-04-13 而 rustc_key 是 c2743eb4。 我如何找出 beta-20
我发现我认为这是一种非常奇怪的行为。当变量在运行时溢出时,Rustc 会崩溃;这对我来说很有意义。但是,它只会在编译时分配溢出的值时发出警告。那不应该是编译时错误吗?否则,两种行为似乎不一致。 我预计
还有一些target-feature s 可以通过添加参数 -C target-feature=+sse,+avx 使用编译器。可用功能可以使用 rustc --print target-featur
使用 gcc 时,我可以通过运行 gcc -dumpmachine 得到 gcc 认为是我的主机的三元组。 .在我当前的系统上,这给了我 x86_64-linux-gnu . 我怎样才能稳定 rust
我正在尝试实现以下特征,其中 以后需要 impl Baz for T where T: OtherTrait †. trait Baz: Clone { fn baz(&'baz mut se
我正在尝试通过编译 Rust 来学习汇编。我找到了一种将 Rust 代码编译为二进制机器码并能够 objdump 来查看程序集的方法。但是,如果我写以下内容: #![no_main] #[link_s
有这个熟悉的编译错误: error[E0283]: type annotations required: cannot resolve `T: Constraint` ... 然后 rustc --e
如果我编译这个简单的程序 fn main() { println!("Hello"); } 使用 rustc test.rs -o test 然后我可以使用 ./test 运行它,但是在文件管理器中双
我正在编写一个带有一些 C 集成的 Rust 程序,所以我使用的是自定义构建脚本。在这个脚本中,我传递了 -L 至 rustc , 但这仅适用于 不包含空格。build.rs 中的确切行: print
我正在尝试在我的程序中使用 rustc crate。 #[macro_use] extern crate rustc; extern crate rustc_typeck; extern crate
我正在开发一个库,作为其功能的一部分,需要根据不同类型中包含的键对不同类型进行比较。 在稳定的 Rust 中没有办法要求键是相同的(不能使用相等边界),所以我使用 PartialOrd 即使键必须是
我有一个 JSON 结构,其中一个结构的字段可以是一个对象,也可以是该对象在数据库中的 ID。假设文档看起来像这样,具有两种可能的结构格式: [ { "name":"pebbles"
如 cargo check 所示,检查您的程序是否格式正确而无需实际生成代码(通常是一项非常耗时的任务)通常很有用。我想直接用 rustc 检查单个(库)Rust 文件(我不能使用 Cargo!)。
在我们的项目中,我们需要使用不稳定的 cargo 选项 --out-dir,但我们仍然希望使用稳定的 rustc 来构建我们的 rust 代码。这可能吗? 最佳答案 您可以使用 __CARGO_TES
嗨,我正在尝试探索 Rust。我想要做的是使用 glob 模块,当我使用 $cargo build 和 $cargo run 构建代码时,它会成功构建并运行可执行文件,但是如果我用 $rustc ma
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
我想设置 rustc-env=VAR=VALUE 以便我可以在我的代码中使用 env::var("VAR") 访问它。但是,我不清楚在哪里指定它。我可以在 Makefile 中设置环境变量 VAR 吗
无法编译的聊天服务器: use std::io::{TcpListener, TcpStream}; use std::io::{Acceptor, Listener}; enum StreamOrS
我想让 rustc 在特定的 crate 中使用 lld 作为链接器而不是 ld。因此,我在我的项目目录中创建了 .cargo/config,内容如下: [target.x86_64-unknown-
我是一名优秀的程序员,十分优秀!