C++ 我应该从源代码编译库吗?

C++ 我应该从源代码编译库吗?,c++,linux,compilation,cross-platform,cross-compiling,C++,Linux,Compilation,Cross Platform,Cross Compiling,我正在开发一个应用程序,它将在定制的、基于debian的linux系统上运行。我们有一个工具链,这样我们就可以为目标系统交叉编译应用程序,这样我们就不必依赖于编译所依赖的主机操作系统(而不是目标操作系统) 但是,我不确定我们是否应该从源代码交叉编译第三方库,或者我们是否应该只使用预先封装的库和头文件。例如,基于这个页面()libSDL1.2似乎是不可知发行版,所以我们似乎不需要从源代码处编译它。。但是其他一些库对BSD、Ubuntu、Redhat等有不同的风格,这让我认为我们需要用我们的工具链来

我正在开发一个应用程序,它将在定制的、基于debian的linux系统上运行。我们有一个工具链,这样我们就可以为目标系统交叉编译应用程序,这样我们就不必依赖于编译所依赖的主机操作系统(而不是目标操作系统)

但是,我不确定我们是否应该从源代码交叉编译第三方库,或者我们是否应该只使用预先封装的库和头文件。例如,基于这个页面()libSDL1.2似乎是不可知发行版,所以我们似乎不需要从源代码处编译它。。但是其他一些库对BSD、Ubuntu、Redhat等有不同的风格,这让我认为我们需要用我们的工具链来编译它们


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

< p>从源代码编译/构建第三方库总是一件好事。尽管您提到的一些库(如
OpenCV
libSDL
)可以直接使用,而无需编译,但您仍然可以根据首选选项而不是使用默认选项重新构建它们,从而从中受益匪浅。例如,通过重新构建
OpenCV
,您可以添加适合您的电脑的
CUDA
功能以提高速度


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

您的主机操作系统是什么?例如,我习惯于交叉编译,但都是在Debian主机上/针对Debian目标,因此我可以轻松利用多功能包,或者在最坏的情况下使用
xapt
在主机上绘制可链接库。然后,我只需在目标上安装相同的软件包,所有这些软件包都可以顺利运行。当为Debian目标进行交叉编译时,使用Debian主机(无论是什么体系结构)确实会让您的生活更轻松,因为您永远不必手动编译repos中可用的lib(Debian repos非常庞大!)。还要注意,许多Debian包(与其他发行版一样)具有特定于发行版的补丁,以允许软件在整个发行版中运行良好。因此,从上游源代码编译可能不是一个好主意,您可能希望从Debian源代码编译。这反过来又常常涉及特定于Debian的工具。这反过来又需要一个Debian主机。如果您在Debian主机上,首先,multiarch/xapt会使重新编译变得毫无意义。我想你现在明白我的意思了