如何将 sysroot 与 autoconf 一起使用?

问题描述 投票:0回答:2

我正在尝试为 ARM 设备交叉编译 fontconfig。我有一个包含所有依赖项等的 sysroot。 Fontconfig 使用自动配置,所以我这样做了:

./autogen.sh --host="arm-arm1176jzs-linux-gnueabi"         \
              --sysconfdir="${SYSROOT}etc"    \
              --prefix="${PREFIX}"        \
              --localstatedir="${SYSROOT}var" \
              --disable-docs 

但是,没有像

--sysroot
这样的标志,所以我如何将我的sysroot传递给autoconfig?

c++ configuration compilation autoconf
2个回答
4
投票

我猜你将

$CC
设置为交叉编译器的路径。您可以轻松添加一些标志:

export CC=gcc --sysroot=/path/to/sysroot

请注意,这适用于所有工具,因此请记住这一点;)


2
投票

假设您的

./autogen.sh
调用 ./configure,
--host=
选项可确保调用正确的编译器,但不会使创建的 Makefile 知道您的 sysroot。

为了实现这一点,您应该在调用

./configure
./autogen.sh
:

之前添加这些环境变量
export CFLAGS="--sysroot=${SYSROOT}"
export CXXFLAGS="--sysroot=${SYSROOT}"
export LDFLAGS="--sysroot=${SYSROOT} -L${SYSROOT}/usr/lib"

(我的实验在某些情况下需要额外的

-L
。)

注意:我定义了路径变量,例如

$SYSROOT
,不带尾部斜杠。

此外,如果您的项目使用 pkg-config,您还需要教授它有关您的 sysroot 的信息:

export PKG_CONFIG_SYSROOT_DIR="${SYSROOT}"
export PKG_CONFIG_LIBDIR="${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/lib/${HOST}/pkgconfig:${SYSROOT}/usr/share/pkgconfig"

(有很多额外的路径,因为在我的 Yocto 和 Debian 平台上,

.pc
文件遍布各处。)

执行这些措施后,您可以从

${SYSROOT}
和其他
--sysconfdir
命令行选项中省略
./autogen.sh
- 它们会在需要时自动假定。

© www.soinside.com 2019 - 2024. All rights reserved.