如何将 sysroot 与 autoconf 一起使用?
How do I use a sysroot with autoconf?
我正在尝试为 ARM 设备交叉编译 fontconfig。我有一个包含所有依赖项等的 sysroot。Fontconfig 使用自动配置,所以我这样做了:
./autogen.sh --host="arm-arm1176jzs-linux-gnueabi" \
--sysconfdir="${SYSROOT}etc" \
--prefix="${PREFIX}" \
--localstatedir="${SYSROOT}var" \
--disable-docs
但是,没有像 --sysroot
这样的标志,所以我如何将我的 sysroot 传递给自动配置?
我猜你将 $CC
设置为交叉编译器的路径。您可以轻松添加一些标志:
export CC=gcc --sysroot=/path/to/sysroot
请注意,这适用于所有工具,因此请牢记 ;)
假设您的 ./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:${ROOTFS}/usr/lib/${HOST}/pkgconfig:${ROOTFS}/usr/share/pkgconfig"
(还有很多附加路径,因为在我的 Yocto 和 Debian 平台上,.pc
文件到处都是。)
采取这些措施后,您从 --sysconfdir
和其他 ./autogen.sh
命令行选项中省略了 ${SYSROOT}
- 它们会在需要时自动假定。
我正在尝试为 ARM 设备交叉编译 fontconfig。我有一个包含所有依赖项等的 sysroot。Fontconfig 使用自动配置,所以我这样做了:
./autogen.sh --host="arm-arm1176jzs-linux-gnueabi" \
--sysconfdir="${SYSROOT}etc" \
--prefix="${PREFIX}" \
--localstatedir="${SYSROOT}var" \
--disable-docs
但是,没有像 --sysroot
这样的标志,所以我如何将我的 sysroot 传递给自动配置?
我猜你将 $CC
设置为交叉编译器的路径。您可以轻松添加一些标志:
export CC=gcc --sysroot=/path/to/sysroot
请注意,这适用于所有工具,因此请牢记 ;)
假设您的 ./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:${ROOTFS}/usr/lib/${HOST}/pkgconfig:${ROOTFS}/usr/share/pkgconfig"
(还有很多附加路径,因为在我的 Yocto 和 Debian 平台上,.pc
文件到处都是。)
采取这些措施后,您从 --sysconfdir
和其他 ./autogen.sh
命令行选项中省略了 ${SYSROOT}
- 它们会在需要时自动假定。