2013-12-14 40 views
3

我正在研究一个将在定制的,基于debian的linux系统上运行的应用程序。我们有一个工具链,以便我们可以交叉编译目标系统的应用程序,这样我们就不必依赖于我们正在编译的主机操作系统(而不是目标操作系统)。我应该从源代码编译一个库吗?

我不知道,但是如果我们要交叉编译从源代码或者我们是否应该只使用预罐装库和头文件的第三方库。例如,libSDL1.2似乎是基于此页面的发行版不可知的(http://www.libsdl.org/download-1.2.php),所以似乎我们不需要从源代码编译它..但其他一些库对于BSD,Ubuntu,Redhat,等等,这让我觉得我们需要用我们的工具链来编译它们。

什么时候应该从源代码编译库?有什么需要考虑的事情?

+0

什么是您的主机操作系统?我曾经用于交叉编译,但在Debian主机/ Debian目标上都是这样,所以我可以轻松利用multiarch软件包或最糟糕的使用'xapt'在主机上绘制可链接的库。然后,我只是在目标上安装相同的软件包,并且所有软件都能顺利运行在交叉编译Debian目标时,使用Debian主机(无论体系结构)真正让您的生活更轻松,因为您永远不需要手动编译repos中可用的库(并且Debian回购是* huge *!)。 – syam

+0

另外请注意,许多Debian软件包(与其他发行版一样)具有特定于发行版的修补程序,以使软件可以与整个发行版一起播放。因此,从上游源文件编译可能不是一个好主意,您可能需要从Debian源代码进行编译。而这往往涉及Debian特有的工具。而这又需要Debian主机。如果你在Debian主机上,multiarch/xapt首先会使重新编译毫无意义。我想你现在明白我的观点。 ;) – syam

回答

1

它总是编译/从源代码构建第三方库是一件好事。尽管您提到的一些库如OpenCVlibSDL可以直接使用而无需编译,但仍然可以通过根据您的首选选项重新构建它们而不是使用其默认选项而获益。例如,通过重新编译OpenCV,您可以添加CUDA适合您的PC的功能来加速。

要编译/构建第三方,您可以使用cmake。对于大多数第三方库,它们包含一个名为CMakeLists.txt的文件供您执行此操作。