为什么我的发布模式Rust可执行文件包含绝对路径名的字符串?

3

我刚刚创建了我的第一个Rust hello world程序,并接着创建了一个websocket客户端,使用以下编译:

cargo build --release

使用十六进制编辑器检查位于 hello_cargo\target\release 目录下的 216 KB 可执行文件,我看到:

C:\\Users\\GirkovArpa\\.cargo\\registry\\src\\github.com-1ecd2293db9ea513\\embedded-websocket-0.3.0\\src\\lib.rs

C:\\Users\\GirkovArpa\\.cargo\\registry\\src\\github.com-1ecd2293db9ea513\\heapless-0.5.5\\src\\string.rs

C:\\Users\\GirkovArpa\\.cargo\\registry\\src\\github.com-1ecd2293db9ea513\\rand-0.7.3\\src\\rngs\\thread.rs

C:\\Users\\GirkovArpa\\Documents\\GitHub\\hello_cargo\\target\\release\\deps\\hello_cargo.pdb

还有一些类似这样的字符串。而且这是在运行strip hello_cargo.exe后出现的。

我该如何避免这种情况?


调试符号并不是唯一的来源。你粘贴的字符串很可能来自包含它们作为回溯的一部分的错误路径(想想 .unwrap())。事实上,任何代码片段 - 包括 stdlib 或依赖项 - 都可以调用 std::file!-macro,如果没有被证明是死代码,那么该字符串将被包含在最终的可执行文件中。因此,如果隐私对您非常重要,唯一可靠的方法就是在虚拟机内构建。 - user2722968
你使用了哪些依赖项? - Aloso
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接