问题标签 [musl]

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

android-ndk - 哪些(如果有)NDK 库/头文件与其他工具链兼容

我正在开发一个使用 arm-linux-musleabi 工具链编译的项目,该工具链针对 musl libc 构建。使用 Android jni.h 等 NDK 功能有哪些选择?假设 Android NDK 上的 jni.h 与针对实际 Java 的标准 jni.h 不同,我错了吗?我知道将项目移植到 NDK 可能是最好的方法,但让我们假设这对我来说是不可能的。换句话说,“使用 NDK 构建”不是一个选项,即使它是更明智的路径。另请注意,JNI 功能仅用作示例,此问题适用于任何可用作非 ndk 工具链的插件的 Android NDK c/c++ 库。

0 投票
2 回答
4114 浏览

clang - 完整且独立的 LLVM/musl 工具链

我想要实现的是使用musl as编译一个独立于 GNU 且隔离的LLVM 工具链。clib

最近LLVM 4.0发布了许多新的酷特性,包括生产就绪LLD,因此链接步骤也可以由 LLVM 处理。

堆栈或多或少是:

  • llvm
  • lld
  • 编译器-rt
  • libcxx
  • libcxxabi
  • 肌肉

之后,实际上可以在没有太多补丁或类似的情况下这样做(除了编译musl),但遗憾的是,没有关于此的好的文档。

有什么建议么?

0 投票
2 回答
282 浏览

c - 在 glibc 而不是 musl 上覆盖 pthread 函数时出现神秘的段错误

我正在尝试覆盖pthread_createand pthread_exit。覆盖应该调用原件。

我可以覆盖pthread_create,只要我退出我的主线程,它似乎就可以工作pthread_exit(0);。如果我不这样做,则会出现段错误。

如果我什至尝试覆盖pthread_exit,我会得到段错误。

我的设置如下:

谁能向我解释我做错了什么以及段错误的原因是什么?

如果我用 musl-gcc 代替 gcc,问题就完全消失了。

0 投票
1 回答
2028 浏览

go - 使用 cgo、LuaJIT 和 musl 构建静态二进制文件

在阅读了静态编译的 Go 程序之后,即使使用 cgo,我也总是使用 musl 尝试使用所描述的方法来静态链接LuaJIT

我尝试构建的代码:

带有参数和输出的构建命令:

使用LD_DEBUG=all我可以获得更多信息(8000 多行)。

我的问题:问题是什么以及如何解决我认为这里可能有一些提示,但我不能完全掌握它。

我采取了以下步骤:

1.用musl构建静态LuaJIT库。

2. 用musl构建动态LuaJIT库。

3. 检查构建。

4. 安装它。

5. 检查安装。

6.修改golualua.go文件使用硬编码cgo参数。

我在覆盖这些值时遇到了问题,所以我只是修改了源代码。

带参数的旧C评论:cgo

新的:

7. 建立一些例子

如问题开头所示。

LuaJIT 的安装位置:


编辑 1

我已关注@putu 的评论并更改#cgo LDFLAGS

我现在有

0 投票
0 回答
93 浏览

alpine - getpwent_r 和 alpine musl libc

我正在尝试编译一个依赖于共享对象的应用程序,只需调用一次getpwent_r()(我没有编写 lib)。据我所知,getpwent_r()这是一个 glibc 扩展,并且不符合 POSIX。

获得该功能的任何方式,缺少备用库所以(这是不可能的,因为许多核心功能都在该库中)或尝试使用重新编译所以getpwent()

0 投票
1 回答
560 浏览

docker - Docker + older version of Elixir/Phoenix

I have been requested to move an Elixir/Phoenix app to Docker, with which I have no prior experience. The app uses non-latest versions of Elixir and Phoenix so I have had to diverge from the code online which generally focuses on latest versions. That led me to write this Dockerfile

On running

I'm ending up with this error and wondering how to get around it? Noting 'current' in the title I'm wondering whether using an older version of nodejs, and if so, how to do that? Beyond that I am open to any and all suggestions

0 投票
1 回答
130 浏览

c++ - 针对 musl 和 glibc 将数据/时间转换为 tm/time_point。一般的方法

我想将字符串数据转换为struct tm(c) 或std::chrono::time_point. 问题是我想为标准 libc ( glibc 和musl)工作解决方案。我有要解析的树标准格式。

  1. RFC-1123

    1994 年 11 月 6 日星期日 08:49:37 GMT

  2. RFC-850

    “格林威治标准时间 94 年 11 月 6 日星期日 08:49:37”

  3. ANSI C 的 asctime 格式

    1994 年 11 月 6 日星期日 08:49:37"

有什么办法让它工作吗?std::get_time有一个错误
strptime在 glibc 上工作正常(而且很快),但对 musl 失败。

任何想法?我不想像 in 那样使用流get_time。但如果有必要那很好。(可以使用GCC5>和c++11标准)

0 投票
0 回答
1279 浏览

c++ - GCC的自定义(musl)构建找不到LD

我按照这个“教程”创建了一个针对 MUSL 构建的静态 GCC、libc 和 libstdc++。

构建目录:/home/user/musl_gcc/

当我尝试创建一个简单的测试 C 程序并在不带参数的情况下对其进行编译时,我收到以下错误:

链接器不指向自定义构建的链接器,我也不希望它指向。

通过在单独的步骤中编译和链接可以很容易地避免这种情况:

然而。这对我没什么用。我最终想让它与使用 CMake 作为构建环境的 C++ 应用程序一起工作,但这是一个乏味的“查找库”的猫捉老鼠游戏。如何指定要使用的链接器?我以为是LD环境变量,但事实证明这是徒劳的。

0 投票
0 回答
269 浏览

python-2.7 - 为 OpenWrt 构建 cx_Freeze 时出错:“未定义对 `__finite' 的引用”等

我正在尝试为 OpenWrt 打包 Python 模块cx_Freeze。我已经编写了 Makefile(包括在下面),并且对它的工作方式和我定义的内容感到满意(我的理解Build/Compile/PyMod将有效地setup.py与工具链的编译器设置一起运行)。

尝试构建 cx_Freeze (作为常规make world工作的一部分)时,链接到python2.7声称存在未定义的引用__isnan__isinf__finite__rawmemchr. 我在下面列出了完整的错误列表。

我已经清理了 buildroot,并重新编译了整个工具链。我还尝试了多种架构(特别是 x86 和 brcm2708),只是得到了同样的错误。我在构建任何其他 Python 包时没有问题 - 似乎区别在于 cx_Freeze 试图链接 Python 本身。

将 C 库切换到 glibc 是可行的,但是我也想支持默认的 C 库 musl。

如果我可以提供有关主机系统的更多信息或围绕该问题的任何其他上下文,请告诉我。

生成文件

链接器错误输出:

软件版本:

  • OpenWrt 17.01.4
  • cx_Freeze 5.1.1
  • 蟒蛇 2.7
  • 构建操作系统:VirtualBox 中的 CentOS 7.4

在 CentOS 7 构建 VM 上安装的软件包:

  • 开发工具包组
  • gcc-c++
  • 混帐
  • ncurses-开发
  • perl
  • perl-线程队列
  • Python
  • 解压
  • wget
  • xz
  • zlib-开发
  • zlib-静态
0 投票
2 回答
1525 浏览

c - 强制 64 位长双打?

我正在为(ARM 64 位)平台musl-libc上的项目静态构建。aarch64我想避免使用任何软浮点库,例如GCC 的软浮点库例程。但是,即使我使用-mfloat-abi=hard. 据我所知,这是因为 ARM 64 位平台将 a 定义long double为 128 位。

有没有办法改变这种行为?例如,我可以强制long double定义为与 a 相同的大小double吗?我知道这是 C 标准允许的,但我不确定是否有任何方法可以强制 Clang(我专门为此使用 Clang)使用这样的定义进行编译。