问题标签 [crosstool-ng]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
833 浏览

c++11 - 如何使用 c++11 实用程序通过静态链接交叉编译构建在目标上的静态库

**编辑:发现我的问题。正如以下答案所解释的,在制作静态库时,我实际上并没有进行任何链接。相反,我创建了一个共享库并静态链接 libstdc++。

用标准库编译静态库链接(静态) **

我正在尝试创建一种在运行内核(2.6.37)的古老 arm 平台上使用 c++11 的方法。不幸的是,我们 BSP 包含的最新交叉编译是 GCC 4.5.3,它不支持我们需要的所有 c++11 实用程序。

最初我尝试使用旧版本的 crosstool-ng 来构建交叉编译器,但旧版本太坏了。较新的版本不支持 2.6.37 内核。我能够完成一个构建,但是没有构建 g++ 二进制文件,这使得整个努力毫无用处(我确实检查了 menuconfig 中是否启用了 c++)。

因此,我的最后一个选择是在 4.9.4 版本本地构建 gcc 并创建一个静态链接库,让我的 gcc 4.5.3 交叉编译器链接。这似乎在大多数情况下都有效。我使用以下内容在目标上创建我的库:

然后我复制这些文件并尝试使用 gcc 4.5.3 在主机上构建并获得以下信息:

(我清理了一些输出)

未定义对 `std::_Hash_bytes(void const*, unsigned int, unsigned int)' 的 引用 未定义对 std::__throw_regex_error(std::regex_constants::error_type)' 的引用

但是,当我使用 nm 时,我得到以下信息:

有谁知道到底发生了什么?不幸的是,我们需要能够在主机系统上使用我们的交叉编译器来完成大多数工作,但我们还需要集成这个使用 c++11 的特定库。

另请注意,如果我从我的代码中取出正则表达式和哈希功能,但保留其他 c++11 概念,如 nullptr、类型推断、委托等,则代码编译并在目标上运行良好。

编辑:好的,所以经过更多调查,看起来函数 _Hash_bytes 和 __throw_regex_error 没有被静态链接到静态库中。我想我需要知道为什么会这样才能解决这个问题。

0 投票
0 回答
166 浏览

go - crosstool-ng gccgo 构建错误,带有未定义的 morestack 符号

我正在使用 crosstool-ng 1.24.0 构建 gccgo。编译非常简单的 main.go 时出现链接器错误。知道如何解决这个问题吗?任何指向成功构建 gogcc 的指针,即使对于可以轻松验证的不同流行目标也是如此?

主机是 ubuntu 18.04 和 gcc 7.3.0。crosstool-ng 目标是 x86_64-ubuntu16.04-linux-gnu,它应该使用 glibc 2.23 创建 gcc 8.3.0。

以下是缺少的符号:


构建步骤的更多细节:

[1] 查看 crosstool-ng。它的主人现在在 1.24.0 上。

[2] 运行这些命令来构建一个普通的 c 和 c++ 工具链:

[3] 通过编译一个 hello-world 程序并运行来验证 gcc 是否工作。

[4] 编辑脚本以启用 go。补丁看起来像:

[5]./ct-ng build再次运行。

[6] 编译一个非常简单的main.go:

使用命令:

得到这些错误:

0 投票
1 回答
1461 浏览

linux - crosstool-ng 配置设置

我想为 ARM 目标构建交叉工具链。我下载了crosstool-ng包,除了crosstool-ng源码包本身,还包含了crosstool-ng构建crosstool链所需的所有源码包(Linux版本少,glibc,binutils),crosstool-ng的配置文件ng 构建交叉工具链,并构建脚本 build.sh。它已经有 arm-926ejs 的基本配置,但我需要根据我的需要对其进行调整。我需要使用以下选项构建 gcc 编译器:


我无法将上述选项添加到配置文件中,我只是在下面的配置文件中看不到匹配项,除了 CPU arch。

配置文件:

我不确定,工具链配置文件中的匹配选项在哪里?

0 投票
0 回答
487 浏览

gcc - 如何将所需的组件添加到 crosstool-ng?

我下载了crosstool-ng-1.24.0,还没有安装。我想为 ARM 目标构建交叉工具链,但我需要在目标 ARM 板上运行特定的组件版本,工具链为此生成代码,Linux 内核 2.6.26.5,gnu gcc 4.1.2,glibc-2.5 由于 crosstool-ng 工具链没有这些组件,我该如何添加和安装呢?我检查了工具链源和文档,但没有找到任何说明。“包”文件夹包含单独的组件,但以补丁的形式。我更喜欢下载所需的组件并将它们放在本地文件夹中。如何正确制作这些?

0 投票
0 回答
201 浏览

docker - 在 Docker 中的 Alpine 下为 mipsel 架构构建 crosstool-ng 时出现奇怪的错误

正如标题所说,我在 Docker 中的 Alpine 下为 mipsel 架构构建 crosstool-ng 时遇到一个奇怪的错误。有任何想法吗?在我看来,主机工具链和目标工具链之间似乎存在某种不兼容,但我不是这类事情的专家。

这是我的Dockerfile

这是相关的build.log输出:

0 投票
1 回答
28 浏览

glibc - 使用 crosstool-ng 构建工具链时的 KERNELCONFIG

我正在尝试将我们的交叉编译器工具链从 crosstool 更新为 crosstool-ng。我们正在使用旧内核和构建机器。我可以在服务器上安装和配置 crosstool-ng-1.0.0 并构建工具链。我注意到 crosstool 和 crosstool-ng 的输出之间的一个区别是 crosstool-ng 在输出文件夹下缺少一些库。例如 libcrypt.a、libdl.a、libnss_dns.so、libpthread.so 等。

我注意到,在使用 crosstool 构建时,我们将 KERNELCONFIG 设置为特定的内核配置文件。在该配置文件中,我们有如下配置: CONFIG_CRYPTO=y CONFIG_CRYPTO_HMAC=ycryp CONFIG_CRYPTO_NULL=m CONFIG_CRYPTO_MD4=m CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_SHA512=m CONFIG_CRYPTO_DES=y 这是缺少 libcrypt 等库的原因吗?在那种情况下,有没有办法在 crosstool-ng 中设置 KERNELCONFIG 例如作为构建参数?

0 投票
0 回答
43 浏览

c - 来自 MIPS 平台上的 uClibc 的 sem_wait() 返回未实现

碰巧我们被迫在 MIPS 平台上使用 2007 年发布的 Linux 2.6.21,不,改变内核是不可能的,或者说这个问题真的很昂贵。

为此,我正在使用带有 ./maintainer/addToolVersion.sh --linux --obsolete 2.6.21 的 crosstool-ng 构建自己的工具链,以添加旧的 kenel 支持和为 NPTL 线程配置的 uClibc-0.9.33.2。所以我遇到了信号量的问题,特别是 sem_wait() 和 sem_timedwait() - 当使用任何参数调用时,它们返回 -1 并将 errno 设置为未实现。

我试图用设置不同 Errno 的简单函数替换 sem_wait()、__new_sem_wait() 和 __old_sem_wait() 的所有实例,但 x86 汇编代码除外,但它不起作用并且仍然返回 Not Implemented。

所以我的问题是:有没有人见过这样的问题,或者你知道 uClibc 如何选择用于 MIPS 平台的函数?

0 投票
1 回答
506 浏览

linux-kernel - Buildroot and Crosstool-NG configuration error

Building a root filesystem on Buildroot for a Beaglebone Black target. Using a crosstool-NG toolchain with buildroot and I am getting this error in buildroot:

Any idea how to fix this?

0 投票
1 回答
200 浏览

ubuntu - Ubuntu:configure文件夹不在crosstool-ng目录下

我是 ubuntu 新手,我需要按照以下步骤在我的 VM 中安装 crosstool-ng:

1 mkdir 测试

2 光盘测试

3 git 克隆https://github.com/crosstool-ng/crosstool-ng

4 ./引导程序

5 ./configure --prefix=/home/khouloud/lab/test/crosstool-ng/ctng

但是我bash: ./configure: No such file or directory 在这一步中遇到了这个错误`在运行第 5 步时

这些是crosstool-ng目录下列出的文件/文件夹

我不知道克隆 crosstool-ng 时出了什么问题!

0 投票
0 回答
376 浏览

crosstool-ng - crosstool-ng 下载工具链组件 tarball 'automake' 失败

我尝试ct-ng build在 MacOSX 中使用 Docker 进行 rpi3 配置。

crosstool-ng 的版本是 1.24.0

并且有错误信息:

我检查了 crosstool-ng 源中的包文件crosstool-ng-1.24.0/packages/automake/

package.desc中:

是不是下载地址有问题?
“下载压缩包”的目的是什么?
是否可以在本地使用我自己下载的 tarball?

谢谢你的耐心。