1

共享可执行文件时,我真的需要担心用于制作该可执行文件的库吗?似乎在生成 exe 时应该考虑到这一点,而不是在必须运行它时。只是好奇。我很确定我不必担心,但想问这个问题以确保。安全总比后悔好。

4

1 回答 1

3

这就是静态链接和动态链接的区别。正如您所推测的,使用静态链接,库代码的相关部分直接包含(复制)到您的二进制文件中。使用动态链接,存在运行时依赖;您的二进制文件将使用依赖于操作系统的技术来访问(依赖于操作系统的)共享库中的代码,例如 Win32 上的 DLL 或 Linux 上的 SO。

如果您不确定您的程序是使用静态链接还是动态链接编译的,请查阅您的编译器文档。此外,还有一些工具可以检查“导入表”或等效项的二进制文件头,并确定它们依赖的共享库(如果有)。为此,我在 Linux 和 Windows 下都使用objdump带有选项的GNU 。-x

于 2010-06-23T18:51:07.377 回答