- 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/
我正在按照此处列出的步骤操作: http://www.nvidia.com/object/gpu-accelerated-applications-tensorflow-installation.ht
我正在使用 Simplicity Studio 为我的应用程序生成代码。它会自动生成一个 Makefile,我能够构建在我的主机 amd64 ubuntu 16.02 上运行的应用程序。 现在我想构建
我正在尝试使用 crosstools-ng 来编译使用 pthread 的程序,但是由于某种原因链接器找不到该库。我已经检查过,这些库位于 -L 指定的链接路径中是论据。 这是错误: /home/**
如何配置 crosstool-ng 以从生成的工具链名称中删除供应商名称。 例如,在不指定供应商部件的情况下创建一个 arm 交叉工具链将导致以下命名输出 arm-unknown-linux-gnue
如何在 Bazel 的 CROSSTOOL 文件中设置仅 C(而非 C++)编译器标志。 compiler_flag 可用于 C 和 C++,cxx_flag 用于 C++ 代码。设置C only选项
我最近尝试为我的 ARM 板编译 crosstool-ng。主机是Arch linux 3.9.4-1。我遇到了以下问题: [ALL ] checking for python... /usr
感谢 crosstool-ng,我有一个可用的交叉编译器工具链 :) -- 然而,crosstool-ng 的文档非常稀少,而且我是交叉编译的新手。我认为在这种情况下,具体的宿主和目标并不重要。 我有
我尝试使用 bazel 构建tensorflow-serving,但在构建过程中遇到了一些错误 ERROR:/private/var/tmp/_bazel_Kakadu/3f0c35881c95d2c
我正在尝试让 crosstool-ng 同时支持 C 和 C++。尽管我在使用 menuconfig 时选择了 C++,但它似乎并未构建。 gcc 编译器按预期工作,但 g++ 不工作 我不确定我做错
我正在尝试使用 crosstool-ng 构建工具链,我已经全部设置好,按照 http://crosstool-ng.org/#download_and_usage 中的描述选择了我的 cpu我正处于
我正在使用 crosstool-ng 为 beagleboard-xm 构建一个 tolchain。构建以如下方式进行: [INFO ] ===============================
我正在尝试为我的 DNS-320L NAS 构建内核模块. 我在 Debian lenny chroot 环境中构建了 crosstool-ng,但是在我编译了我的内核模块并尝试安装它之后,我得到:
我的公司使用飞思卡尔 PowerPC 处理器开发 Linux 嵌入式系统。 几年前,我写了一篇关于如何使用的内部 HowTo Dan Kegel's crosstool为我们的产品设置交叉编译器环境。
我目前正在尝试为我的树莓派交叉编译构建 crosstool-ng,但遇到了一些问题。我在尝试构建 crosstool 版本 1.19.0 时收到以下错误: [CFG ] checking fo
我正在尝试构建一个交叉编译器,以使用 crosstool-NG 来定位在我的 NAS 盒子上运行的处理器。 . NAS 盒子是 ZyXEL NSA210 ,有一个example dmesg outpu
有人可以帮我解决这个错误吗?我正在尝试使用 ct-ng(版本 1.23.0)构建arm-unknown-linux-gnueabi。 [ERROR] /home/tomas/crosstool-
出于某种原因,在我的 ubuntu 系统上,在 crosstool-ng 上运行 make 会抛出此错误。我尝试查看是否可以找到具有 tag 命令的包,但我认为它不存在。 /usr/bin/make
我正在做一个从 Free Electron 到构建交叉编译工具链的实验室但是当我运行构建命令时,它在下载东西后不久就失败了…… 我的东西:xubuntu 14.04.3 | crosstool-ng-
我编写了一个自定义 CROSSTOOL 文件,它为我的 Cortex-M 目标调用 arm-gcc 编译器。我通过 -isystem 指定我的标志,包括 sysroot。 我看到 Bazel 使用一堆
我是交叉编译的新手,我按照 using-crosstool-ng-and-cygwin by MAKSYM SHYTE 中的步骤操作 在为 i686-nptl-linux-gnu 目标生成交叉编译器时
我是一名优秀的程序员,十分优秀!