musl-libc 安装与调试

news/2024/10/1 15:27:07

musl-libc 官网:http://musl.libc.org
1、下载与安装

  下载源码并解压

   编译参数

./configure [option]... [VAR=VALUE]...
 
option  说明 
 --help  帮助
 --prefix=DIR  指定安装目录。默认为/usr/local/musl
 --host=HOST  
设置目标程序运行的CPU平台
一般不需要设置,除非你想要交叉编译
默认与宿主机一样
 --enable-FEATURE[=yes|no]  yes:开启FEATURE
no: 关闭FEATURE
 --enable-static[=yes|no]  是否生成静态库
 --enable-shared[=yes|no]  是否生成动态库
 --enable-warnings[=yes|no]  是否开启编译器警告
 --enable-debug[=yes|no]  是否带上debug符号
与enable-FEATURE对应的选项,还有disable-FEATURE,disable-FEATURE相当于enable-FEATURE=no
VARVALUE示例说明
CC gcc |  clang 指定C编译器
CFLAGS -O2 -v 指定C编译器的参数
 
CPP cpp 指定C预处理器
CPPFLAGS -I<includeDIR> 指定C预处理器的参数
 
LDFLAGS -L<libDIR> 指定C链接器的参数
LIBS -l<libName> 指定C链接器要链接的库的名称

示例:将musl 安装到/usr/local/musl 下,添加调试符号

./configure --prefix=/usr/local/musl CFLAGS='-O2 -v' --enable-debug && make && make install

2、查看musl-gcc 编译器

root@test:/data/musl-1.2.5# ls -al /usr/bin/gcc-musl 
lrwxrwxrwx 1 root root 28  5月  7 23:36 /usr/bin/gcc-musl -> /usr/local/musl/bin/musl-gcc
root@test:/data/musl-1.2.5# cat /usr/bin/gcc-musl 
#!/bin/sh
exec "${REALGCC:-gcc}" -static -g3 "$@" -specs "/usr/local/musl/lib/musl-gcc.specs"

本质上使用的还是gcc,添加了编译参数变成musl-gcc 想了解可以查看 /usr/local/musl/lib/musl-gcc.specs 

3、编写第一个程序并调试

root@test:/data/musl_test# cat main.c int main()
{return 1;
}
root@test:/data/musl_test# gcc-musl main.c -g -o test
root@test:/data/musl_test# ls -al
总用量 64
drwxr-xr-x 2 root root  4096  5月 10 00:00 .
drwxr-xr-x 5 root root  4096  5月  7 23:35 ..
-rw-r--r-- 1 root root    31  5月  7 23:35 main.c
-rwxr-xr-x 1 root root 50208  5月 10 00:00 test

gdb 调试

root@test:/data/musl_test# gdb ./test 
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./test...
(gdb) starti
Starting program: /data/shiqi/musl_test/test Program stopped.
0x000000000040102f in _start ()
(gdb) layout asm

 进入musl-libc 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/29581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

El-table组件实现懒加载

背景 有的时候我们表格的数据不想使用分页组件展示,想要显示所有的数据,但是显示所有数据会导致服务器负荷严重(比如CPU过载),我们可以使用懒加载的形式,此方式利用监听是否滚动到元素底部,如果到元素底部就去请求下一页的数据 原理效果图示例代码 <template><di…

Stable Diffusion 发型提示词,美学探索

通过使用发型提示词,可以在生成图片时更准确地描述所需的发型特征。这些提示词包括各种发型类型,从卷发到短发,甚至特定的颜色和风格。通过结合正面和负面提示词,可以确保生成的图片符合预期,避免不合适的内容出现,并介绍一些提示词工具来打造个性化的图像描述。 如何使用…

在阿里云服务器中搭建一个 Ghost 博客

Ghost 是一个基于 Node.js 开发的免费开源博客平台,用于简化博客的写作发布等流程。本文介绍如何在阿里云的 Ubuntu 20.04 操作系统的轻量应用服务器上部署 Ghost 博客(在其他服务器比如 ECS 也是差不多的步骤,主要是 Node.js 环境要选对)。 Ghost 搭建概述 Ghost 官方推荐…

Scurm冲刺第四天

Scurm冲刺第四天 1. 站立式会议内容昨日已完成任务 今日计划完成任务首页代码设计实现 前端UI设计代码编写(收藏页面,商品详情页,个人中心页)后端用户功能模块的购物车,收藏和个人中心操作功能 后端管理员模块功能实现(登录注册功能,用户管理功能,个人中心操作)跟进前后…

【专题】2022年中国企业数字化学习行业研究报告PDF合集分享(附原数据表)

报告链接:http://tecdat.cn/?p=32263 多变,不确定性,复杂,模糊不清的新业务图景,加快了公司人才发展模式的数字化转变;疫情冲击离线运输与公司现金流量,消费者支出减少,机构表现受压,数字化学习突破;行业数字化水平不断提高,商业体系和学习体系之间的关联性不断加强…

敏捷冲刺-5月8日

敏捷冲刺-Day-03所属课程 软件工程2024作业要求 团队作业4—项目冲刺作业目标 完成第 3 篇 Scrum 冲刺博客冲刺日志集合贴 https://www.cnblogs.com/YXCS-cya/p/181788031.项目燃尽图 1.1 第三日-5月8日进度 当前进度较慢2.会议记录 2.1 会议主题 第 3 天 Scrum 冲刺-项目冲刺 …

Homework 7

1.尝试建模电梯的状态图2.学校规定:一个学生可选修多门课,一门课有若干学生选修; 一个教师可讲授多门课,一门课只有一个教师讲授; 一个学生选修一门课,仅有一个成绩。 学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。 要求:根据…