我如何使用sysroot与autoconf
How do I use a sysroot with autoconf?
我正在尝试为ARM设备交叉编译fontconfig。我有一个包含所有依赖项的系统根。Fontconfig使用autoconfig,所以我这样做:
./autogen.sh --host="arm-arm1176jzs-linux-gnueabi"
--sysconfdir="${SYSROOT}etc"
--prefix="${PREFIX}"
--localstatedir="${SYSROOT}var"
--disable-docs
然而,没有像--sysroot
这样的标志,所以我如何将我的sysroot传递给autoconfig ?
我猜您将$CC
设置为交叉编译器的路径。您可以很容易地添加一些标志:
export CC=gcc --sysroot=/path/to/sysroot
请注意,这适用于所有工具,所以请记住;)
假设您的./autogen.sh
调用。/configure, --host=
选项确保调用正确的编译器,但不会使创建的Makefiles意识到您的sysroot。
./configure
, ./autogen.sh
:
之前添加这些环境变量export CFLAGS="--sysroot=${SYSROOT}"
export CXXFLAGS="--sysroot=${SYSROOT}"
export LDFLAGS="--sysroot=${SYSROOT} -L${SYSROOT}/usr/lib"
(我的实验在某些情况下需要额外的-L
)
注意:我定义了我的路径变量,如$SYSROOT
,没有末尾的斜杠。
此外,如果您的项目使用pkg-config,您还需要教它关于您的系统根:
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}
—它们会在需要的地方被自动假定。
相关文章:
- C++/autoconf 等效于文档库要求.txt的要求是什么?
- 为Bazel工具链指定sysroot
- OpenSSL with CMake - 未知选项: --sysroot 在构建 openSSL 时
- 相当于 CMake 中的 autoconf AC_CHECK_DECLS
- 使用GCC,优于工具链中的标头SYSROOT标头
- RcppArmadillo:使用autoconf禁用OpenMP
- 由C 11库拒绝的AutoConf被编译器接受,被预处理器拒绝
- lib和带有autoconf的模块之间有什么区别
- 使用带有autoconf的doxygen宏
- Autoconf 在 CentOS 上AC_CHECK_SIZEOF总是 0
- 我可以从automake/autoconf中提取libtool配置以单独使用吗
- log4cplus是否有标准的Autoconf宏
- scons如何将sysroot传递给g++
- 交叉编译时CMAKE缺少sysroot
- 配置文件位置和二进制文件,并构建像autoconf这样的系统
- 包括使用automake和autoconf的动态库
- Automake & Autoconf - 程序无法识别刚刚构建的静态库
- 修改使用autoconf创建的生成文件
- 向autoconf C++项目添加编译后命令
- 我如何使用sysroot与autoconf