Answers:
该消息No such file or directory
未引用您的可执行文件:a.out
。相反,它是指运行32位动态链接的可执行文件所需的帮助程序。a.out
现在,我发现这篇文章很好地解释了所有这些内容:
静态和动态链接
二进制可执行文件有两种类型:静态链接的可执行文件和动态链接的可执行文件。首先是关于静态链接的函数:当程序要调用库函数时,它通过名称来引用它。从源代码构建程序时,程序中使用的所有库函数都将从库复制到程序中。然后,程序包含其自己的代码以及所使用的库函数的代码。然后在调用位置将名称更改为程序中相应功能的地址。此过程称为链接,因为它会将函数名称与函数本身及其实现链接在一起。之所以称为static,是因为在构建程序之后无法更改链接。
动态链接程序的工作方式不同:该程序还通过名称引用库函数。在构建程序时,将组装两个列表并将其与程序一起存储:在哪个位置使用哪些库函数的列表,以及包含该程序使用的函数的库的列表。这就是构建程序的全部。
稍后,在执行时,一个特殊的帮助程序,即所谓的动态链接程序,在文件系统中的库列表中查找每个库的特定位置,并将其加载到内存中。现在,动态链接器知道库函数在哪些内存地址可用。它使用第一个列表在所有调用库函数的位置写入正确的地址。然后可以运行动态链接的程序。