为交叉编译配置“--prefix”选项
configure "--prefix" option for cross compiling
交叉编译时,--prefix
选项应该传递哪个路径:我应该指定构建机器上的路径还是目标平台上的路径?
假设我将代码构建到 /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
不是构建路径而是 运行 环境的路径(即目标平台上的路径)。答案 here makes me think that I'm right. But there are many pages out there (for example, Cross-compiling FFmpeg for Raspbian:--prefix=/my/path/were/i/keep/built/
) 人们在 --prefix
的构建机器上使用路径。所以我很困惑。
如您所见:
--prefix=dirname Specify the toplevel installation directory. This is
the recommended way to install the tools into a directory other than
the default. The toplevel installation directory defaults to
/usr/local.
据我了解,您正在尝试为某个目标编译编译器。
在这种情况下,prefix
将在 build 机器上的 make install
命令后安装编译器时指定目录。之后你可以在那里带一个编译器。
. Should I use --prefix=/home/me/arm/build/target_fs/usr or just --prefix=/usr and then make install DESTDIR=/home/me/arm/build/target_fs?
在你的情况下 prefix
命令没有任何意义。因为你是手工复制二进制文件。
您还可以在 GCC 官方网站上找到所有其他信息:
https://gcc.gnu.org/install/finalinstall.html
是的,你没看错,--prefix 是工作环境的路径。只需使用 --prefix=/usr。您可以通过在 DESTDIR 中安装来检查 make install 命令将在哪个文件夹路径中安装您的二进制文件。例如,如果您使用 --prefix=/usr 和 make install DESTDIR=/home/me/arm/build/target_fs,那么二进制文件将安装在文件夹 /home/me/arm/build/target_fs/usr。如果您只是 运行 make install,那么二进制文件将安装在您的前缀中,即“/usr”中。
当您进行交叉编译时,我认为您使用哪个前缀并不重要,因为无论如何您将安装在 DESTDIR 中,然后手动将二进制文件复制到您的目标。
交叉编译时,--prefix
选项应该传递哪个路径:我应该指定构建机器上的路径还是目标平台上的路径?
假设我将代码构建到 /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
不是构建路径而是 运行 环境的路径(即目标平台上的路径)。答案 here makes me think that I'm right. But there are many pages out there (for example, Cross-compiling FFmpeg for Raspbian:--prefix=/my/path/were/i/keep/built/
) 人们在 --prefix
的构建机器上使用路径。所以我很困惑。
如您所见:
--prefix=dirname Specify the toplevel installation directory. This is the recommended way to install the tools into a directory other than the default. The toplevel installation directory defaults to /usr/local.
据我了解,您正在尝试为某个目标编译编译器。
在这种情况下,prefix
将在 build 机器上的 make install
命令后安装编译器时指定目录。之后你可以在那里带一个编译器。
. Should I use --prefix=/home/me/arm/build/target_fs/usr or just --prefix=/usr and then make install DESTDIR=/home/me/arm/build/target_fs?
在你的情况下 prefix
命令没有任何意义。因为你是手工复制二进制文件。
您还可以在 GCC 官方网站上找到所有其他信息: https://gcc.gnu.org/install/finalinstall.html
是的,你没看错,--prefix 是工作环境的路径。只需使用 --prefix=/usr。您可以通过在 DESTDIR 中安装来检查 make install 命令将在哪个文件夹路径中安装您的二进制文件。例如,如果您使用 --prefix=/usr 和 make install DESTDIR=/home/me/arm/build/target_fs,那么二进制文件将安装在文件夹 /home/me/arm/build/target_fs/usr。如果您只是 运行 make install,那么二进制文件将安装在您的前缀中,即“/usr”中。
当您进行交叉编译时,我认为您使用哪个前缀并不重要,因为无论如何您将安装在 DESTDIR 中,然后手动将二进制文件复制到您的目标。