问题标签 [uclibc]
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.
linux - 使用非主 libc 编译,(即 eglibc、uClibc)
我在嵌入式环境中工作。我有一个用于 ARM 架构的交叉编译器,eglibc
它是主要库(即libc
工具链附带的默认库)。现在我想要一些应用程序链接到uClibc
. 所以我uClibc
用那个工具链编译。现在在尝试用 编译和链接应用程序时uClibc
,出现错误。它与工具链的默认库链接。我认为在同一台机器上可能有两个不同的 libcs(例如 libc、uClibc)。
我在网上搜索并附带以下内容
-
正如它所建议的,我做了以下
在这种情况下,它与默认
libc.so.6
的eglibc
-
正如上面的链接所建议的,我什至尝试了以下方法:
在这种情况下,它也与默认值相关
libc.so.6
联eglibc
我哪里错了?我真的陷入了困境。有人可以阐明一下吗?
embedded - 运行针对 uClibc 编译的 BusyBox 小程序时出现“未知错误 2”
我正在尝试为 SuperH 处理器板制作嵌入式 Linux。我正在使用带有 uClibc 的 Buildroot 2012.2 工具链。
所有编译都很好,但是当我尝试运行一些 BusyBox 小程序(例如“ls”或“mount”)时,我收到如下错误:
特别是对于“ls”,它会写入此错误文件夹中的文件数。
你有什么想法可能导致这种情况吗?互联网上似乎没有人遇到同样的问题,我在没有运气的情况下爬了几天的配置。
我相信错误可能是由错误配置的 uClibc 引起的,但这只是我的猜测。
谢谢。
编辑: 我在 uClibc 中启用了几个错误消息选项,现在我得到“没有这样的文件或目录”错误。
gcc - arm-angstrom-linux-gnueabi-gcc 链接器无法链接到 uclibc
我正在尝试为 angstrom linux 构建一个应用程序(在我的例子中,它使用 uclibc 而不是 libstdc++)。我正在使用 bitbake 和 openembedded。使用简单的工具链,我只需添加-muclibc
标志即可成功构建。使用 bitbake 我的构建命令如下
我在哪里-muclibc mainThread.cpp lib.cpp -lportaudio
做的。Portaudio ( -lportaudio
) 已成功链接。uclibc(我认为)链接失败;我收到这些错误:
谢谢
linux - 如何使用带有 bitbake 的 uclibc 构建包 - Bitbake 在尝试构建 uclibc 时引发 MultipleMatches 异常
我正在尝试通过 bitbake 构建uclibc
架构arm7a
,但我得到以下输出
我也在尝试建立一个特定的食谱(我做错了吗?)但我明白了
谢谢
compilation - 使用 uCLibc 编译 valgrind
我正在做一个项目,我想使用uClibc编译valgrind。谁能给我一些关于如何进行的建议?
我正在使用 Fedora 和 i386 平台。目标平台也是 i386,稍后将在 MIPS 上运行。
谢谢
configuration - 如何使用 uclibc 编译?
大家好,我已经安装了 buildroot 工具链,并且能够编译在基于 uClibc 的 chroot 上运行的简单“Hello World”程序。但是,对于使用 ./configure 的程序,我很困惑如何要求它使用基于 uclibc 的工具链,而不是我系统中存在的基于 glibc 的工具链。我的操作系统是 Fedora,它是基于 i386 的机器。我想使用 uClibc 为同一平台编译程序。
gcc - 带有 uclibc 的 ARM gentoo crossdev:需要 OABI 而不是 EABI
任何人都可以帮助解决我的 ARM + GCC + UCLIBC 与 crossdev 的链接问题吗?
也在这里发布到 Gentoo 论坛:http ://forums.gentoo.org/viewtopic-t-925012.html
最近,我被分配到一个项目,该项目具有使用带有 OABI 的旧 GCC 开发的可执行文件。作为参考,这是一个在系统上运行良好的可执行文件的 readelf 头输出:
我使用 crossdev 和最新的 gcc/binutils/linux-headers/etc 创建了一个交叉编译器。并与 EABI。
我很高兴地开始使用该交叉编译器在我的本地文件夹中填充可执行文件,只是后来在我的硬件上尝试了可执行文件并发现我最终遇到了分段错误。我意识到,只是通过相当多的谷歌搜索,我真的需要为 uclibc 拥有旧的、遗留的 ABI:OABI。我以前的交叉编译器是从大约 2005 年开始的。
作为另一个参考点,我的 eabi 可执行文件从 readelf 生成的头文件看起来有点像这样:
虽然机器是相同的,但分段错误不提供在目标上执行二进制文件的方法。
在谷歌搜索更多之后,我发现可能有一种方法可以使用 eabi 编译器为遗留系统生成一些代码。当我运行这个命令时,我很高兴:
我最终得到:
在这一点上,我开始坐立不安,我决定尝试使用 -mabi=apcs-gnu 创建一个可执行文件,
我得到一个链接器错误:
问题:这让我相信我的 EABI 不正确,我需要 OABI。是对的吗?
我相信是这样,于是开始通过crossdev研究uclibc:
我很高兴地报告说,被编译成某种对象二进制文件的文件具有正确的 elf 标头。所以我想这就是我想要的。
但是这在编译 uclibc 时会死掉,如下所示:
如果我正确地分解了错误,我相信
1) arm Makefile.arch 没有正确构建 __aeabi_unwind_cpp_pr0 因为该文件仅在设置 EABI 时构建:
我相信这个错误的修复是:
2) gcc 中的软浮点数也没有被链接器正确包含。在这一点上,我真的不知道为什么。
所以我试图强制 GCC 为软浮点构建,并在稍后在 uclibc 的构建中获得链接:
然后我检查了是否在任何日志中使用了 -msoft-float 和 -mfloat-abi=soft 进行编译。
但我确实注意到 --with-float=soft 是在 config.log 中设置的,所以这让我相信应该已经生成了浮点数。
我注意到 gcc 的编译选项中的 -D__GCC_FLOAT_NOT_NEEDED 。
我对 GCC 进行了回归,以查看中断发生的位置。
- gcc 4.x 不适用于 uclibc。-- 从 4.4.4-r2 开始,uclibc 与 gcc 的链接失败 -- 在 4.4.4 之前,gcc 似乎没有
- 如果使用 USE=-nptl,gcc-3.4.6-r2 确实可以工作
作为参考,我跑了:binutils: 2.22-r1 Linux Header: 3.3, 3.4 uclibc: 0.9.33.2 gcc: 3.2.3-r4, 3.3.6-r1, 3.4.6-r2, 4.1.4-r1, 4.3.3 -r2、4.4.2、4.4.4-r2、4.4.5、4.4.6-r1、4.4.7、4.5.3-r2、4.6.0、4.6.1-r1、4.6.2、4.6.3
c - 我应该添加哪个库来解决 fcntl64、stat64、...?
我正在尝试为 ARM uClibc 环境构建一个项目,但我缺少一些功能。找不到我应该包含哪个库来解决依赖关系。nm
不要帮我搜索,因为它在工具链附带的大多数库上都说:
这是 GCC 的输出:
UPD:我已经从目标主机复制了 uClibc 并明确定义要求与它链接:
这大大超出了我对交叉编译的了解。任何的想法?
rest - 用于 uCLib 的 RESTful 客户端 API
我需要使用 uClibc 在嵌入式环境中实现 RESTfull 客户端。
是否有任何在 C 中实现 RESTful Client 的开源库只能依赖 µClibc?
php - 使用 UCLIBC 交叉编译 PHP
这是一个转发,以前的帖子已关闭,移至服务器故障并再次关闭。我认为这篇文章是一个有效的 stackoverflow 问题,因为我认为它是由一些 automake/compile/linking 错误引起的。这是一个编程问题,而不是服务器管理问题。
https://serverfault.com/questions/418521/cross-compile-php
帖子开始
我已经下载了 PHP 5.4.0 源代码,将其解压缩并移到源文件夹中。
我做了一个配置:
其次是
没有错误,一切运行良好。接下来我进行make安装。
再次一切正常。我将它移动到目标平台并运行
我用我的网络服务器直接用 php 测试了一个简单的主页。
它按预期工作。接下来我测试:
哦不~
我测试了另一个脚本:
结果相同:
我有 php.ini 吗?
是的,并且没有禁用的功能。测试 strace /usr/arm/www/bin/php index.php
文件 info.txt 存在并且它有读/写的权限。
测试 strace /usr/arm/www/bin/php shell.php
如果我通过 gdb 运行 index.php,它会给我:
gdb 从 shell.php 给我这个 启动程序:/usr/arm/www/bin/php shell.php
zend.h 位于 /usr/arm/www/include/php/Zend/ 显然在交叉编译期间出现了问题。我错过了什么?我没有找到任何配置标志来纠正这个问题,并且创建到所需位置的符号链接会删除 gdb 输出,但 php 仍然存在段错误。
谢谢你的帮助!
更新:
更新2
使用 memcheck 重新运行 valgrind,得到的输出与以前大致相同,但这是新的:
更新3
虽然 valgrind 让我失望了,但我继续使用 gdb,我在目标系统上创建了文件夹 /home/maiden/..etc 并复制了我的 php/include 文件夹的内容并重新运行 gdb。现在我收到此错误消息:
这与 Sixeightzero 昨天在评论中所写的非常相似。我现在已经尝试过 PHP 版本 5.3.5、5.4.0、5.4.5 全部相同的错误。
更新4
我为 glibc 下载了一个新的工具链,用 glibc 交叉编译了一个新的 busybox,创建了一个 chroot jail,用 glibc 而不是 uclibc 交叉编译了 php,并在我的 uclibc 盒子上的 chroot jail 中对其进行了测试,它工作!但我仍然需要让 php 在我的 uclibc 环境中工作....