configuration“–prefix”选项进行交叉编译

在进行交叉编译时,应该将哪个path传递给--prefix选项:我应该在生成机器上指定path还是在目标平台上指定path?

假设我将代码构build到/home/me/arm/build/target_fs/usr ,然后将这些文件复制到我的目标平台上,它们将位于/usr 。 我应该使用--prefix=/home/me/arm/build/target_fs/usr或者只是--prefix=/usr ,然后make install DESTDIR=/home/me/arm/build/target_fs

我认为--prefix不是构build的path,而是运行环境的path(即目标平台上的path)。 这里的答案让我觉得我是对的。 但是在那里有许多页面(例如, 交叉编译FFmpeg for Raspbian :– --prefix=/my/path/were/i/keep/built/ ),人们在构build机器上使用path--prefix 。 所以我很困惑。

是的你是对的,–prefix是工作环境的路径。 只要使用–prefix = / usr。 您可以通过在DESTDIR中安装来检查哪个文件夹路径make install命令将安装您的二进制文件。 例如,如果您使用–prefix = / usr并且安装DESTDIR = / home / me / arm / build / target_fs ,则二进制文件将安装在/ home / me / arm / build / target_fs / usr文件夹中。 而如果你只是运行make install ,那么二进制文件将被安装在你的前缀,即“/ usr”中。

在交叉编译时,我认为使用哪个前缀并不重要,因为无论如何,您将在DESTDIR中进行安装,然后将二进制文件手动复制到目标。

你可能会发现:

–prefix = dirname指定顶层安装目录。 这是将工具安装到非默认目录的推荐方法。 顶层安装目录默认为/ usr / local。

据我所知,你正试图编译一个目标的编译器。

在这种情况下, prefix将指定编译器将在生成计算机上的make install命令之后make install目录。 之后你可以在那里拿一个编译器。

。 我应该使用–prefix = / home / me / arm / build / target_fs / usr或者只是–prefix = / usr,然后make install DESTDIR = / home / me / arm / build / target_fs?

在你的情况下, prefix命令没有任何意义。 因为你是手动复制二进制文件。

您也可以在GCC官方网站上找到所有其他信息: https : //gcc.gnu.org/install/finalinstall.html