我经常下载一个C / C ++项目,并尝试对其进行编译以使其发挥作用。 make
或configure
命令失败的时间几乎是100%,我在依赖树中走了一段路,遇到了一个我不知道如何解决的错误,然后放弃了。这可能不仅仅是一个头文件,而是一个更广泛的问题,但是make
进程似乎经常需要在特定位置为某个特定版本的库提供一些.h文件,而这些文件不在我的文件中。系统。
如果项目需要这些特定的头文件,那么作者为什么不将它们复制到项目源树中?通常,要求以这种特定方式设置开发机器不是很疯狂吗?如果有人想从事两个项目,并且他们需要头文件的版本冲突,该怎么办?
一个明显的解决方案是在构建过程中包括一个Dockerfile,但我对这种情况最初是如何产生的以及是否有一些理由不仅仅包括必要的头文件(至少看起来像一个部分解决方案。
头文件有什么用?您需要实际的库,而不仅仅是头文件。
所以为什么不包括整个库?
某些库很大。比程序大得多。
因为它们很大,所以编译它们需要很长时间。
您不想为每个项目在计算机上安装的每个库都有单独的副本。这很浪费空间,如果两个不同的版本尝试互相交谈会发生什么?
库得到更新,并且您不需要每次更新库时都必须更新项目。
版权表示您未经许可不得合法放弃该库的副本。通常,图书馆的创建者会授予您许可。有时他们没有。