学习从源代码进行编译(在Unix / Linux / OSX上)
当我尽可能从软件包(MacPorts / apt-get)安装软件时,我经常发现自己需要从源代码编译软件包。./configure && make && sudo make install通常就足够了,但有时它不起作用-否则,我经常卡住。这几乎总是以某种方式与其他库依赖项相关。 我想学习以下内容: 我如何确定要传递的参数./configure? 共享库如何在OS X / Linux下工作-它们在文件系统中的位置,如何./configure && make找到它们,链接到它们时实际发生了什么 共享库和静态链接库之间的实际区别是什么?为什么我不能仅静态链接所有内容(这些天RAM和磁盘空间很便宜),从而避免奇怪的库版本冲突? 我如何知道我已经安装了哪些库以及什么版本? 如何在不破坏正常系统的情况下安装一个库的多个版本? 如果我正在从源代码,并使用包被管理的系统上安装的东西,什么是这样做的最彻底的方法? 假设我设法从源头上轻松地编译了一些东西,那么我该如何打包它,以使其他人不必跳同样的圈呢?特别是在OS X上。 我需要掌握哪些命令行工具才能熟练掌握这些知识?诸如otool,pkg-config等之类的东西 我愿意在这里投入大量时间和精力-我不一定要直接回答上述问题,我宁愿获得有关我可以阅读的书籍/教程/常见问题解答的建议,知识我需要了解实际发生的事情,因此自己解决问题。