首页 > 其他分享 >glibc和musl libc的区别

glibc和musl libc的区别

时间:2023-11-08 23:11:05浏览次数:34  
标签:gcc musl libc glibc ++ 编译器

++和gcc是GNU编译器集合中的两个组件,g++是GNU C++编译器,gcc是GNU C语言编译器。这两个编译器都使用glibc作为标准C库,glibc是GNU操作系统的标准C库,为支持C程序提供了许多函数和服务。

简单来说,glibc是C标准库的一个实现,它包括头文件、函数库和其他的应用程序。而g++和gcc则是编译器,它们将源代码编译成可执行文件,通过调用glibc库中的函数来执行程序。

当您使用g++编译C++代码时,它会链接到glibc库,并使用该库中的函数以进行内存分配、字符串处理等操作。同样,当您使用gcc编译C代码时,它也会链接到glibc库并使用标准C库中的函数。

因此,glibc库是与g++和gcc紧密相关的一部分,它为这些编译器提供了基本的C和C++支持,并为应用程序提供了一组丰富的函数库。

musl libc 和 glibc 都是 C 语言的标准库。它们的功能类似,都包括了很多常用的函数,如字符串处理、文件操作、进程控制等等。它们的主要区别在于实现方式和设计哲学。

musl libc 是一个轻量级的 C 标准库,它的设计目标是尽可能小而快,同时提供最高的代码质量和安全性。musl libc 的源代码通常较短,编译速度较快,没有额外的依赖,因此非常适用于嵌入式系统和轻量级应用程序。

相比之下,glibc 是一个较重的 C 标准库,它的设计目标是提供更广泛的功能和更高的兼容性。glibc 的源代码较长,编译速度较慢,有许多库文件和依赖项,因此通常用于桌面系统和服务器软件开发。

总的来说,musl libc 和 glibc 都是优秀的 C 标准库,但在不同的场景下选择合适的库对于开发者来说非常重要。

 

下载musl源码,网址:https://musl.libc.org/

配置/编译:

./configure && make

或者./configure --prefix=xxx  && make

cat > hello.c <<EOF
#include <stdio.h>
int main()
{
    printf("hello, world!\n");
    return 0;
}
EOF
  1. 执行指令编译源文件(前提配置了环境变量):
    musl-gcc hello.c

    得到可执行文件 a.out

  2. 运行可执行文件测试:
    ./a.out


原文链接:https://blog.csdn.net/huapeng_guo/article/details/130106780

https://blog.51cto.com/u_15899439/5909119

标签:gcc,musl,libc,glibc,++,编译器
From: https://www.cnblogs.com/youxin/p/17818574.html

相关文章

  • Configuration failed because libcurl was not found. Try installing:
     01、问题R语言中安装"devtools"包报错如下:Configurationfailedbecauselibcurlwasnotfound.Tryinstalling: 02、解决方法:[root@pc1~]#yuminstalllibcurl-devel##根据提示安装 .  ......
  • linux 中查看GNU c库版本 libr.so.6(GLIBC版本)
     001、centos7中(base)[root@pc1test]#cat/etc/redhat-release##查看当前系统CentOSLinuxrelease7.6.1810(Core)(base)[root@pc1test]#ldd--version##查看gnuc库版本ldd(GNUlibc)2.17Copyright(C)2012FreeSoftwareFoundatio......
  • version `GLIBC_2.34' not found (required by ./rmblastn)
     001、问题如下: 002、解决方法:    003、 参考:01、 ......
  • tdc++.so.6: version `GLIBCXX_3.4.29' not found
     001、python程序报错如下: 002、问题分析a、调用的是python程序b、libstdc++.so.6是c++标准库执行python程序时,需要调用c++标准库,libstdc++.so.6(lib=glib,6表示第6版),版本不匹配报错,无法找到:GLIBCXX_3.4.29。 003、确认调用的哪里的python程序(base)[b20223040......
  • glibc 是什么?
     001、c运行库. linux系统中最低成的API(应用程序接口),几乎其它任何运行库都会依赖与glibc.glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一......
  • C语言运行库及glibc介绍
    C语言运行库任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能够正常运行。这套代码至少包括入口函数,及其所依赖的函数所构成的函数集合。当然,它还理应包括各种标准库函数的实现。这样的一个代码集合称之为运行时库(RuntimeLibrary)。而C语言的运行库,即被称为C......
  • [glibc] 带着问题看源码 —— exit 如何调用 atexit 处理器
    前言之前在写apue系列的时候,曾经对系统接口的很多行为产生过好奇,当时就想研究下对应的源码,但是苦于linux源码过于庞杂,千头万绪不知从何开启,就一直拖了下来。最近在查一个问题时无意间接触到了codebrowser这个在线源码查看器,它同时解决了源码包下载和环境搭建的问题,版本也......
  • glibc方式安装mysql
    cd/usr/local/srcmkdirmysql   useraddmysql下载wgethttps://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz解压tarzxvfmysql-5.7.33-linux-glibc2.12-x86_64.tar.gz移动并改名mvmysql-5.7.33-linux-glibc2.12-x86......
  • 【发现一个问题】macos m2 下无法使用 x86_64-linux-musl-gcc 链接含有 avx512 指令
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯一开始是使用golang中的cgo来编译:envCC=cCGO_ENABLED=1GOOS=linuxGOARCH=amd64\CGO_CFLAGS="-mavx-mavx2-mavx512f-mavx512vl-mavx512bw-O2"\gobu......
  • samtools: error while loading shared libraries: libcrypto.so.1.0.0: cannot open
     001、问题:conda安装samtools后调用出现如下报错:samtools:errorwhileloadingsharedlibraries:libcrypto.so.1.0.0:cannotopensharedobjectfile:Nosuchfileordirectory 002、解决方法(base)[root@pc1home]#find~-name"libcrypto.so.1*"##......