Linux tar静态编译过程记录

1、静态编译脚本

#!/bin/bash
#
# build static tar because we need exercises in minimalism
# MIT licentar: google it or see robxu9.mit-license.org.
#
# For Linux, also builds musl for truly static linking.tar_version="1.29"
musl_version="1.1.15"platform=$(uname -s)if [ -d build ]; thenecho "= removing previous build directory"rm -rf build
fimkdir build # make build directory
pushd build# download tarballs
echo "= downloading tar"
curl -LO http://ftp.gnu.org/gnu/tar/tar-${tar_version}.tar.xzecho "= extracting tar"
tar xJf tar-${tar_version}.tar.xzif [ "$platform" = "Linux" ]; thenecho "= downloading musl"curl -LO http://www.musl-libc.org/releases/musl-${musl_version}.tar.gzecho "= extracting musl"tar -xf musl-${musl_version}.tar.gzecho "= building musl"working_dir=$(pwd)install_dir=${working_dir}/musl-installpushd musl-${musl_version}env CFLAGS="$CFLAGS -Os -ffunction-sections -fdata-sections" LDFLAGS='-Wl,--gc-sections' ./configure --prefix=${install_dir}make installpopd # musl-${musl-version}echo "= setting CC to musl-gcc"export CC=${working_dir}/musl-install/bin/musl-gccexport CFLAGS="-static"
elseecho "= WARNING: your platform does not support static binaries."echo "= (This is mainly due to non-static libc availability.)"
fiecho "= building tar"pushd tar-${tar_version}
env FORCE_UNSAFE_CONFIGURE=1 CFLAGS="$CFLAGS -Os -ffunction-sections -fdata-sections" LDFLAGS='-Wl,--gc-sections' ./configure
make
popd # tar-${tar_version}popd # buildif [ ! -d releases ]; thenmkdir releases
fiecho "= striptease"
strip -s -R .comment -R .gnu.version --strip-unneeded build/tar-${tar_version}/src/tar
echo "= compressing"
upx --ultra-brute build/tar-${tar_version}/src/tar
echo "= extracting tar binary"
cp build/tar-${tar_version}/src/tar releases
echo "= done"

说明:此编译脚本在X86平台和ARM平台都可以使用,亲测

/opt/build/tar-1.35/src编译后tar二进制文件在此目录,直接使用即可

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式】设计原则和常见的23种经典设计模式

设计模式 1. 设计原则(记忆口诀:SOLID)【记忆口诀:单开里依接迪合(单开礼仪接地和)】 (1)单一职责原则(Single Responsibility Principle, SRP) &#xff…

使用Docker实现Jenkins+Python + Pytest +Allure 接口自动化

一、Jenkins搭建 参考《Docker 安装 Jenkins》 进入 jenkins 容器 CLI 界面 docker exec -itu root jenkins /bin/bash二、准备条件 1、替换镜像内源 为了安装wget,默认用yum会安装不上wget命令,参考文章《docker容器内如何更换yum源【只想换成国内…

使用Vite构建Vue3+TypeScript项目

1,新建项目前,确保电脑 已经安装Node.js,pnpm 在本地新建一个文件夹 ,在文件路径输入cmd 如下展示 2,执行如下指令搭建项目 filename,即搭建的项目名称。 pnpm create vitelatest filename 输入指令按回车之后如下…

Promise.all 静态方法

Promise.all 静态方法 概念:合并多个 Promise 对象,等待所有同时成功完成(或某一个失败),做后续逻辑 语法 const p Promise.a11([Promise对象,Promise对象,...]) p.then(result > { // result结果: [Promise对象成功结果&…

Java HashMap 和 HashSet 的高效使用技巧

Java HashMap HashMap 是一种哈希表,它存储键值对。键用于查找值,就像数组中的索引一样。HashMap 的优势在于它可以使用任何类型作为键,并且查找速度很快。 创建 HashMap // 导入 HashMap 类 import java.util.HashMap;public class Main …

前端在浏览器端播放直播流协议的方式

直播流协议2种:.flv后缀是http-flv协议,.m3u8后缀是hls协议 一、播放.m3u8 1、hls.js HLS (HTTP Live Streaming)是Apple公司研发的流媒体传输技术,包括一个m3u8的索引文件、多个ts分片文件和key加密串文件。这项技术主要应用于点播和直播…

畅享精酿啤酒与意式面包的简单美味

在忙碌的生活中,我们时常渴望寻找那份简单的美好。而Fendi Club啤酒与意式面包的搭配,正是这种美好体验的代表。它们以其简洁的味道和口感,成为了无数人心中的佳品。 Fendi Club啤酒,以其醇厚的口感和细腻的泡沫,成为了…

PL/SQL学习笔记

介绍 PL/SQL 编程语言是SQL 和 Oracle 关系数据库的过程扩展语言 是Oracle 编程环境中的一个工具 基本语法 S.No Sections & Description 1 Declarations 此部分以关键字 DECLARE 开头。 它是一个可选部分,定义了程序中要使用的所有变量、游标、子程序和其他…

Milvus的相似度指标

官网:https://milvus.io/docs/metric.md版本: v2.3.x 在 Milvus 中,相似度度量用于衡量向量之间的相似度。选择良好的距离度量有助于显着提高分类和聚类性能。下表展示了这些广泛使用的相似性指标如何与各种输入数据形式和 Milvus 索引相匹配。 一、浮…

如何用Python实现转行高薪梦?三个热门方向带你入门

Python是一门非常适合转行的编程语言,它有着丰富的应用场景和学习资源,而且语法简单易懂,学习效率高。如果你想要用Python实现转行梦想,那么你可能会问,Python有哪些热门的工作方向?小编这就为你介绍Python…

js【详解】DOM

文档对象模型(Document Object Model,简称DOM) DOM 是哪种数据结构 ? DOM 的本质是浏览器通过HTML代码解析出来的一棵 树。 操作 DOM 常用的 API 有哪些 ? 获取 DOM 节点 //方式 1:通过【id】获取&#xf…

啤酒:精酿啤酒与三明治的快捷搭配

在快节奏的现代生活中,人们总是追求简单、快捷的美食。而Fendi Club啤酒与三明治的搭配,正是满足了这一需求。它们以其方便的制作方式和美味的口感,成为了无数人的心头好。 Fendi Club啤酒,以其醇厚的口感和细腻的泡沫&#xff0c…

常用python模板

1.简单脚本模板 def main():#代码逻辑if __name__"__main__":main() 2.类定义模板 Class Myclass:def __init__(self,parameter):self.parameterparameterdef my_method(self):#方法逻辑 3.函数定义模板 def my_function(parameter):#代码逻辑return result 4.…

【AI视频教程】只需5步,AI作出鸡你太美视频

1.视频效果 2.准备工作 制作视频效果,需要准备下面3个条件: 准备stable diffusion的环境剪辑一段【鸡你太美】原版视频stable diffusion安装sd-webui-IS-NET-pro插件 2.1部署stable diffusion环境 这里还是建议大家用云平台部署stable diffusion&am…

Python数据库操作全攻略:从入门到精通,一文掌握连接与操作MySQL、SQLite、PostgreSQL等主流数据库

在数据驱动的世界里,Python作为强大的编程语言,在处理和分析数据库方面具有显著优势。本文将深入浅出地讲解如何使用Python操作各类主流数据库,并通过实际代码示例帮助您快速上手。 一、Python操作MySQL数据库 借助mysql-connector-python库,我们可以轻松实现对MySQL数据…

第二十天-数据分析

1.介绍 1.什么是数据分析 1.以下4个纬度结合起来的数据科学 2.数据分析的特殊性

Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战

上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码,针对测试链进行自测开发,准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址,我们不需要在线进行创建,直接可以通过第一节的离…

重庆医科大学和重庆市生物信息学学会联合主办!第十六届生物信息学和生物医学技术国际会议(ICBBT 2024)即将召开!

2024年第十六届生物信息学和生物医学技术国际会议(ICBBT 2024)将于5月24-26日在中国重庆举行。本次会议由重庆医科大学和重庆市生物信息学学会联合主办。ICBBT会议系列一年一届,已有15年历史。本次会议的主要目标旨在促进生物信息学和生物医学…

4、Generator、class类、继承、Set、Map、Promise

一、生成器函数Generator 1、声明generator函数 function* 函数名() { }调用生成器函数 需要next()返回一个generator对象,对象的原型上有一个next(),调用返回对象{value:yield后面的值,done} function* fn() {console.log("我是生成器函数") } let it…

Linux-网络编程报错分析

1【UDP】通信 【No route to host】:没有连接主机的路由 原因分析: 1.没有配置好默认网关地址,计算机上的路由表找不到到目标ip的路由。 解决方法:检查网络配置 2. 解决方法: 3. 解决方法: