标准库和自定义动态库的链接有区别吗?

问题描述 投票:-1回答:1

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

operating-system dynamic-linking dynamic-library
1个回答
1
投票

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

举个例子。 考虑到你有一个大型的Java应用程序,它由数千个独立的源文件组成,并分割成多个包。 假设它有许多JAR文件依赖,其中一些是你开发的库,另一些是可以从标准地方下载的外部库。

你可以花几个小时的时间手动下载外部JAR文件,并把它们放在正确的位置。 然后你可以手动运行 javac 为每个源文件,以及 jar 多次。 每次都在正确的目录下,使用正确的命令行参数.并按照正确的顺序。

而且每次修改源代码时.都要重复上述过程的相关部分。

并确保你不会犯错误,导致你浪费时间去寻找由于没有正确构建而导致的测试失败、运行时错误等。

或者......你可以使用一个构建工具来处理这一切。 并且每次都能正确地完成。

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

  • 他们比手工操作更省事
  • 它们更准确
  • 结果可重复性较强。

我想知道为什么编译器做不到?

因为编译器的设计不是为了执行整个构建过程。 就像你的烤箱不是设计用来烹饪三道菜并在餐桌上端上来的。

编译器(通常)被设计成编译单个源代码文件。 构建的意义不止于此。

© www.soinside.com 2019 - 2024. All rights reserved.