我不明白像libc这样的标准库是如何链接的,我用的是MingW编译器,我看到它的bin文件夹里没有libc.dll文件,那么libc是如何链接的呢,编译器怎么知道自定义动态库和动态库的区别?
我们之所以使用构建工具,是因为构建工具是一种实用的编译代码和创建可执行文件、可部署文件等的方法。
举个例子。 考虑到你有一个大型的Java应用程序,它由数千个独立的源文件组成,并分割成多个包。 假设它有许多JAR文件依赖,其中一些是你开发的库,另一些是可以从标准地方下载的外部库。
你可以花几个小时的时间手动下载外部JAR文件,并把它们放在正确的位置。 然后你可以手动运行 javac
为每个源文件,以及 jar
多次。 每次都在正确的目录下,使用正确的命令行参数.并按照正确的顺序。
而且每次修改源代码时.都要重复上述过程的相关部分。
并确保你不会犯错误,导致你浪费时间去寻找由于没有正确构建而导致的测试失败、运行时错误等。
或者......你可以使用一个构建工具来处理这一切。 并且每次都能正确地完成。
总之,我们使用构建工具的原因是。
我想知道为什么编译器做不到?
因为编译器的设计不是为了执行整个构建过程。 就像你的烤箱不是设计用来烹饪三道菜并在餐桌上端上来的。
编译器(通常)被设计成编译单个源代码文件。 构建的意义不止于此。