【问题标题】:configure "--prefix" option for cross compiling为交叉编译配置“--prefix”选项
【发布时间】:2016-01-29 08:52:45
【问题描述】:

在进行交叉编译时,我应该将哪个路径传递给--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 的路径。所以我很困惑。

【问题讨论】:

    标签: linux cross-compiling configure


    【解决方案1】:

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

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

    【讨论】:

    • 听说这个前缀可能被编译后的程序用来查找一些文件(比如configs)。因此,如果我使用/home/me/arm/build/target_fs/usr 作为前缀,那么编译后的程序可能会尝试在/home/me/arm/build/target_fs/usr 中查找文件,这是我的构建机器上的路径,而不是在程序运行的目标平台上。所以我认为前缀在某些情况下可能很重要。
    • 安装没关系。但是,是的,在运行时很重要。您的二进制文件可能会在运行时在前缀中查找一些配置文件。只需使用标准路径,例如 --prefix=/usr
    • 谢谢,我明白了。
    【解决方案2】:

    如您所见:

    --prefix=dirname 指定顶级安装目录。这是 将工具安装到目录以外的推荐方法 默认值。顶层安装目录默认为 /usr/local.

    据我了解,您正在尝试为某个目标编译编译器。

    在这种情况下,prefix 将指定编译器将在 build 机器上执行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

    【讨论】:

    • 不,我不编译编译器,我交叉编译将在 ARM CPU 上运行的普通包(如 ffmpeg)。在我的例子中,“复制”不仅仅是cp,它是一个脚本,可以制作文件系统映像以烧入目标板。
    • 那么看来你必须使用DESTDIR gnu.org/prep/standards/html_node/DESTDIR.html
    • 前缀肯定会产生很大的影响,它通常用于对二进制文件本身的路径进行硬编码,或者例如在生成的配置文件中。您希望 --prefix 是运行时使用的安装路径。
    • @Arseniy,谢谢,您的链接澄清了一些问题:“以这种方式将变量 DESTDIR 附加到每个目标提供了分阶段安装,其中安装的文件不会直接放置到预期位置,而是复制到一个临时位置 (DESTDIR)。但是,安装的文件会保持其相对目录结构,并且不会修改任何嵌入的文件名。"
    猜你喜欢
    • 2016-06-24
    • 2011-07-05
    • 1970-01-01
    • 2015-03-30
    • 2017-02-11
    • 1970-01-01
    • 2019-03-02
    • 2021-09-14
    相关资源
    最近更新 更多