在进行交叉编译时,我应该将哪个路径传递给--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让我觉得我是对的。但是有很多页面(例如,Cross-compiling FFmpeg for Raspbian:--prefix=/my/path/were/i/keep/built/
),人们在构建机器上使用--prefix
的路径。所以我很困惑。
答案 0 :(得分:5)
是的,你是对的, - prefix是工作环境的路径。只需使用--prefix = / usr。您可以通过在DESTDIR中安装来检查 make install 命令将在哪个文件夹路径中安装二进制文件。例如,如果您使用 - prefix = / usr 和 make install DESTDIR = / home / me / arm / build / target_fs ,那么二进制文件将安装在该文件夹中/家/我/ ARM /编译/ target_fs / usr中。如果您只是运行 make install ,那么二进制文件将安装在您的前缀中,即“/ usr”中。
当您进行交叉编译时,我认为使用哪个前缀并不重要,因为无论如何您将在DESTDIR中安装,然后手动将二进制文件复制到目标。
答案 1 :(得分:-2)
你可能发现:
- prefix = dirname指定顶级安装目录。这是 建议的方法将工具安装到除以外的目录中 默认。顶级安装目录默认为 的/ usr /本地。
据我了解,您正在尝试为某个目标编译编译器。
在这种情况下,prefix
将指定在构建计算机上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