- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
感谢 crosstool-ng,我有一个可用的交叉编译器工具链 :) -- 然而,crosstool-ng 的文档非常稀少,而且我是交叉编译的新手。我认为在这种情况下,具体的宿主和目标并不重要。
我有一些关于目录结构的基本问题。工具链安装在以目标命名的目录中。里面有一组目录:
arm-unknown-linux-gnueabi
bin
include
lib
libexec
share
我认为这是针对实际的交叉编译器位,因为 bin/中的编译器确实为此目的工作。注意里面有一个arm-unknown-linux-gnueabi/目录,即里面的路径是../arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi
。里面还有另一棵树:
bin
debug-root
include
lib
lib32
lib64
sysroot
lib* 目录是到 sysroot/的符号链接(symbolic link)。 bin里的东西好像和父目录/bin里的是同一套交叉编译工具:
> bin/gcc -v
Using built-in specs.
COLLECT_GCC=./gcc
Target: arm-unknown-linux-gnueabi
Configured with: /usr/x-tool/.build/src/gcc-4.7.2/configure
--build=x86_64-build_unknown-linux-gnu
--host=x86_64-build_unknown-linux-gnu
--target=arm-unknown-linux-gnueabi
所以我的第一个问题是:这些是做什么用的?这个目录是做什么用的?
我的第二个问题是:应该如何使用 sysroot/?它显然是针对目标平台的本地支持库,所以我想如果我正在构建这样一个库,我应该将它用作--prefix
,尽管它相当于与使用父目录相同,因为 lib* 是符号链接(symbolic link)的……这个带有 bin 和向下到 sysroot 的符号链接(symbolic link)的“中间目录”令人困惑。我相信(一些)autotools 风格的包可以配置为“--with-sysroot”。 它有什么意义,如果我看到它,它应该如何与其他选项(如 --prefix 等)相关联使用?
最佳答案
对于你的第一个问题,作为工具链的安装目录:
它们是相同的,确实是硬链接(hard link)。
您可以通过 CC=arm-unknown-linux-gnueabi-gcc 使用 arm-unknown-linux-gnueabi-gcc,例如
export PATH=<toolchain installed dir>/bin:$PATH
CC=arm-unknown-linux-gnueabi-gcc ./configure
make
或者
export PATH=<toolchain installed dir>/arm-unknown-linux-gnueabi/bin:$PATH
./configure
make
我一直使用第一种形式,我不确定后一种形式是否有效。
关于你的第二个问题,根据我的经验,你不需要担心 sysroot。交叉编译器会自动在 sysroot/usr/include 中找到正确的 C 头文件。
除了你想交叉编译一些库,安装到sysroot下,可以通过
export PATH=<toolchain installed dir>/bin:$PATH
CC=arm-unknown-linux-gnueabi-gcc ./configure --prefix=<toolchain installed dir>/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot
make
make install
关于linux - crosstool-ng、目录结构和 sysroot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791341/
MacOS Mojave 版本10.14(18A389)。 今天,我将Xcode更新为版本10.0(10A255)。当我尝试构建我的Qt项目时结束,我得到一个错误: clang: warning: n
我使用 sshfs 将目标设备(Beaglebone Black、ARM arch)的根安装到主机上的一个文件夹,并尝试使用 GCC 的 --sysroot 选项进行交叉编译。 但有一个问题 - 一些
我正在使用 QT 和嵌入式设备,在许多文档项目 ( like here ) 中,他们都在谈论 sysroots。我在网上搜索过,但找不到任何关于 sysroot 是什么的信息。不过我有一个交叉编译器工
我有一个必须为主机和目标构建的包 (openssl)。它创建了一些 .so 和 .a 库,一些其他包分别在运行时和编译时需要这些库。 当我为目标编译这个包时,一切正常,每个文件最终都在我告诉它去的地方
我不是没有经验,但我很清楚我在交叉编译和 sysroots 领域缺乏一些基本的了解。我希望有人可以向我提供我需要继续的宝贵信息。 我已经下载了一个预构建的 armhf gcc 交叉编译器/工具链,它带
目录recipe-sysroot-native占用200M+磁盘空间,我发现它存在于每个WORKDIR中,我认为它们都有保存内容。拥有这么多副本是一种磁盘空间的浪费,而且可能会减慢构建时间。能不能放在
我正在尝试使用 Linux Mint 64 位存储库中的 arm-linux-gnueabi-gcc 为诺基亚 N9 手机交叉编译程序(目前来自 libav 的 avconv)。编译器的libc版本是
--sysroot当您不希望标准路径中的 header /库影响您的构建时, switch 很有用。 --sysroot=dir: Use dir as the logical root direct
当您不希望标准路径中的 header /库影响您的构建时,--sysroot 开关非常有用。 --sysroot=dir: Use dir as the logical root directory
我设置了this我的 Windows 机器上的 Pi 工具链 (raspberry-gcc4.6.3-nosysroot.exe),然后我按照说明操作 here同步我的 sysroot。 我在项目中使
我正在尝试安装 cydia 源代码。 $ git clone git://git.saurik.com/cydia.git $ cd cydia 但是当我输入“./sysroot.sh”时出现了这个错
我正在用 Android 编译一个简单的程序 NDK Linux build在 Ubuntu Linux 10.0.4 上。 //no includes!!! int main() { i
我在使用 CMAKE 设置交叉编译时遇到了一些问题。我使用的工具链是在 yocto 中创建的,它可以在 cmake 之外完美运行。 我按照教程设置了以下工具链文件: SET(CMAKE_SYSTEM_
我正在尝试使用 --host=x86_64-apple-darwin10 和 --target=ppc64-linux 构建 GCC 交叉编译器。 我的目标需要一个 sysroot。我可以使用的是一个
感谢 crosstool-ng,我有一个可用的交叉编译器工具链 :) -- 然而,crosstool-ng 的文档非常稀少,而且我是交叉编译的新手。我认为在这种情况下,具体的宿主和目标并不重要。 我有
我正在查看可以为 configure 运行的所有选项Qt 提供的脚本。 (特别是 qt-everywhere-opensource-src-5.2.0)。 经过大量搜索后,我确定这些东西充其量只是记录
我正在尝试根据编译标志(通过将 Application.mk 的路径动态传递给 ndk-build 命令)为 Android NDK 的多个体系结构和多个 API 级别编译源代码。直到r12一切顺利。
我在 CXXFLAGS 中设置了 sysroot当编译目标文件时,我可以在 cmd 行中看到 sysroot但是当构建 elf 时,我无法在 cmd 行中找到 sysroot,因此构建失败 那么如何正
我通过ssh使用sshfs在macbook中设置了odroid xu4板(arm板)的sysroot。这样我就可以看到 MacBook 上的所有文件夹和文件。我只是想知道它是否应该能够编辑此 sysr
我正在尝试交叉编译一个简单的代码片段 1 #include 2 #include 3 4 int main() 5 { 6 printf("%d\n", SOL_N
我是一名优秀的程序员,十分优秀!