问题标签 [linux-toolchain]

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 投票
1 回答
871 浏览

toolchain - 究竟什么是工具链?

我在谷歌上搜索并得到以下结果。

工具链是一组编程工具,用于执行复杂的>软件开发任务或创建软件产品,通常是>另一个计算机程序或一组相关程序

从上面的段落中,我了解到工具链或编译器工具链用于开发任何软件产品,例如操作系统(我不确定,如果我错了,请纠正)

如果是这样,我目前使用的是 Ubuntu 16.04。我发现它预装了一个编译器工具链。但是操作系统已经完全开发好了,那么在构建单独的软件产品之前,这里还需要什么工具链呢?

0 投票
1 回答
250 浏览

makefile - 如果使用 arm-poky-linux-gnueabi-gcc 在不同文件夹中构建相同的代码,则生成的二进制文件将具有不同的内容

我有一个源代码,我正在尝试交叉编译 armv7 架构,它正在编译并生成二进制文件。当我在不同的目录中编译相同的代码时,生成的二进制文件与前一个不同。为什么我会得到这种差异?不仅是二进制文件,目标文件也发生了变化。我正在使用 arm-poky-linux-gnueabi-gcc。我使用以下命令创建的工具链“source /opt/fsl-imx-x1​​1/4.1.15.1.1/environment....”等工具链也在导出编译器设置 (CLFAGS, LDFLAGS)。

0 投票
2 回答
663 浏览

makefile - Buildroot - menuconfig 创建配置,但不会生成

我正在尝试使用 buildroot 为 MIPS64(小端序)创建交叉编译器工具链。

我已经运行make menuconfig并将目标设置为 MIPS64(小端)。另外我被告知配置文件已经生成,我可以运行 make (如下)

所以,然后我运行make并得到以下信息:

有任何想法吗?

0 投票
0 回答
580 浏览

gcc - 构建 64 位 MIPS 大端交叉编译器工具链

我正在尝试构建一个 64 位 MIPS 大端交叉编译器工具链。我一直在使用以下指南(用 aarch64 代替 mips64): https ://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/

我使用了指南中提到的每个库的以下版本:

  • binutils-2.31.tar.gz
  • gcc-7.3.0.tar.gz
  • linux-4.18.tar.gz
  • gmp-6.1.2.tar.xz
  • mpc-1.1.0.tar.gz
  • mpfr-4.0.1.tar.gz
  • isl-0.18.tar.bz2
  • clog-0.18.1.tar.gz

我已经成功构建了工具链,但它正在生成以下二进制文件:

ELF 32 位 MSB 可执行文件,MIPS,N32 MIPS64 版本 1 (SYSV),动态链接,解释器 /lib32/ld-uClibc.so.0,带 debug_info,未剥离

但是,我需要的是以下内容:

ELF 64 位 MSB 可执行文件,MIPS,MIPS64 rel2 版本 1 (SYSV),动态链接,解释器 /lib64/ld.so.1,适用于 GNU/Linux 2.6.12,已剥离

有谁知道我做错了什么步骤会阻止构建适当的二进制文件?

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 回答
374 浏览

segmentation-fault - 调用 libc init 时出现段错误

我正在尝试通过使用自定义(较新版本)动态链接器/加载器和库而不是默认安装的库在嵌入式目标上运行应用程序。但是当我尝试运行一个简单的 hello world 应用程序时,我得到了段错误

任何线索我做错了什么?

0 投票
0 回答
403 浏览

linux - execvp: /bin/sh: 使用 crosstool-ng 构建 glibc 2.5 时参数列表太长

我正在尝试将我们的构建服务器从 opensuse 9 升级到 ubuntu 14.04。我们的目标操作系统是内核 2.6.24 和 glibc 2.5 和 gcc 4.2.1 的 uClinux。我们正在使用 crosstool-ng 来构建我们的交叉工具链。构建工具链工作正常,也可以构建内核。但是在 nptl 中构建 glibc 时,构建退出时出现 make Error 1。

我只看到一个重复的错误:

在一些类似这篇这篇的文章中,问题似乎是传递给 execve 系统调用的字符串的最大大小。然而,最重要的是,当我在旧的 opensuse 上运行时 getconf ARG_MAX ,答案是 131072,而在 ubuntu 14 上,答案是 getconf ARG_MAX,它要大得多。并以同样的方式cat /proc/$$/environ | wc -c在opensuse上运行,给出482作为答案,而在ubuntu上的答案是1257。当我将glibc文件夹移动到路径较短的文件夹时,构建工作没有问题。我想知道这是否是真正的问题,是否有解决方案。我用于构建 glibc 的 make 文件是:

这是 make log 的最后一部分:

通过在调试模式下运行 make 并使用 strace,我无法找到有关该错误的更多详细信息:

0 投票
0 回答
209 浏览

laravel - 如何使用 laravel 后端 API 在 nuxt.js 中制作图片上传表单

我在 nuxt.js 中学到了很多东西,但我对图片上传感到震惊。如果有人分享您的知识。

如何在 nuxt.js 中制作图片上传表单

我为图片上传创建了 laravel API。

我的路由器

控制器代码

我的 Nuxt 代码

0 投票
1 回答
267 浏览

riscv - 如何使用修改后的链接描述文件构建 newlib RISC-V 工具链?

我正在尝试构建一个针对 RISC-V 上的嵌入式操作系统的 GCC/newlib 交叉编译工具链。为此,我需要修改链接二进制文件的虚拟地址。

实现此目的的一种方法是修改工具链附带的默认链接器脚本。我试图在相关组件(newlib、binutils、gcc)中找到最佳位置,我可以在其中调整工具链附带的默认链接器脚本。

对于某些平台,newlib 已经提供了部分或完整的链接器脚本。对于 RISC-V,似乎使用了 binutils 生成的默认链接描述文件。

我可以修补 binutils,但我找不到 RISC-V 链接器脚本的实际构建方式或我将如何修改其中的任何内容。任何指针表示赞赏!

0 投票
1 回答
40 浏览

javascript - 如何在 v-for 循环中更改数组对象中的状态?

我正在使用 Nuxt 在 Vue Js 制作库存系统。我试图创建一个在库存中找到的功能,如果该项目存在于库存中,则数量增加一个。问题?该函数成功运行,但我看不到我的 V-for 列表中的更改,但如果我在我的数组中推送其他对象,则 v-for 循环将使用新数据进行更新。

在我的“addProduct”功能中,如果项目不存在,我在我的“venta”库存中找到一个产品,我在我的库存中添加一个产品,否则我添加 + 1 个数量。该功能正常工作,但渲染 vfor 没有更新。仅当我使用“arrayelement.push”添加新元素时,v-for 列表才会更新

有什么想法可以解决这个问题吗?感谢您的回答