Operating system 链接标准动态库和自定义动态库是否有区别?

Operating system 链接标准动态库和自定义动态库是否有区别?,operating-system,dynamic-linking,dynamic-library,Operating System,Dynamic Linking,Dynamic Library,我不知道像libc这样的标准库是如何链接的,我使用的是MingW编译器。 我看到它的bin文件夹中没有libc.dll文件。那么libc是如何链接的呢? 编译器如何知道自定义库和动态库之间的区别?我们使用构建工具,因为它们是编译代码和创建可执行文件、可部署文件等的实用方法 比如说。假设您有一个大型java应用程序,它由数千个单独的源文件在多个包上分割而成。假设它有许多JAR文件依赖项,其中一些用于您开发的库,另一些用于可以从标准位置下载的外部库 您可以花费数小时手动下载外部JAR文件并将其放置在

我不知道像libc这样的标准库是如何链接的,我使用的是MingW编译器。 我看到它的bin文件夹中没有libc.dll文件。那么libc是如何链接的呢?
编译器如何知道自定义库和动态库之间的区别?

我们使用构建工具,因为它们是编译代码和创建可执行文件、可部署文件等的实用方法

比如说。假设您有一个大型java应用程序,它由数千个单独的源文件在多个包上分割而成。假设它有许多JAR文件依赖项,其中一些用于您开发的库,另一些用于可以从标准位置下载的外部库

您可以花费数小时手动下载外部JAR文件并将其放置在正确的位置。然后您可以为每个源文件手动运行javac,并多次运行jar。每次在正确的目录中使用正确的命令行参数。。。而且顺序正确

每次更改源代码时。。。重复上述过程的相关部分

并确保您不会犯错误,这将导致您浪费时间查找由于未正确构建而导致的测试失败、运行时错误等

或者。。。您可以使用一个构建工具来处理这一切。而且每次都做得很正确

总之,我们使用构建工具的原因是:

他们的工作比手工做的少 它们更准确 结果更具重现性。 我想知道为什么编译器不能这样做

因为编译器不是为执行整个构建过程而设计的。就像你的烤箱不是用来做三道菜的饭,然后在餐桌上端上来一样


编译器通常用于编译单个源代码文件。构建远不止这些。

您想知道哪些构建工具。每个编译器都有自己的构建工具,用于在服务器上编译和构建可部署的应用程序。