Background: Background: 遇到一个打包可执行程序和链接库生成rpm 包的需求,查遍了很多网站的资料,现在整理下解决方案. 前期参考的是这篇帖子: https://codeantenna.com/a/jUEqRgoEsZ CSDN 很多帖子都是抄的rpm 官方提供的教程:https://www.thegeekstuff.com/2015/02/rpm-build-package-example/ 这个帖子介绍了rpmbuild 的所有操作,包括把源码放到rpmbuild 创建…
一.下载 clickhouse 源码包 git clone --recurse-submodules -b v1.1.54385-stable https://github.com/yandex/ClickHouse.git -b 指定版本改目录名字:mv ClickHouse clickhouse-v1.1.54385-stable 打包tar zcvf clickhouse-v1.1.54385-stable.tar.gz clickhouse-v1.1.54385-stable 二.下载s…
概述 从ceph的源码build出rpm包: #git clone --recursive https://github.com/ceph/ceph.git #./instal-dep.sh 以上两点其实在README里面有提及: #mkdir build: cd build; cmake ..; # make dist-bzip2 //此时生成了ceph-XXX.tar.bz2的源码压缩包: 准备rpmbuild 目录 mkdir ~/rpmbuild/ mkdir ~/rpmbuild/BU…
基本步骤: 1.切换至仓库目录RPM_LIST_DIR1和RPM_LIST_DIR2 2.ls列出仓库的rpm包文件并分别重定向至输出文件rpm_list_file1和rpm_list_file2 3.将对比结果输出至差异文件difff_file 总结: 代码中看似技巧性的东西却没有用处的全部删掉,有时你忽悠的不是别人,而是你自己! #!/bin/bash # Version: 1.0 # Date: 2016/08/09 # Author: Kevin Chen Email: cxy_ustc…
安装: yum  install -y rpm-build 目录介绍: 默认目录在  /root/rpmbuild BUILD :你要打包的文件将会在这里编译(编译rpm包的临时目录) BUILDROOT: 在虚拟安装(make install)的目录(编译后生成的软件临时安装目录) RPMS :存放生成的二进制的rpm包(生成的可安装的rpm安装包所在目录) SOURCES :你要编译的源码包会被copy到这里(所有源代码和补丁文件的存在目录) SPECS :你执行的spec文件会被copy到…
关于链接库的知识,网上太多资料了,但是并不代表我很熟悉.今天遇到了 一个问题,就是由于静态链接库和ubuntu系统不兼容导致的,虽然花了点时间才搞定 但是,其中暴露的问题也不少. 没有区分好静态链接库和动态链接库的概念和使用方法. 链接库,顾名思义,就是一些函数代码的集合库,主要有静态链接库和动态链接库两种 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可 执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译 过程中仅简单的引用,因此代码体积较…
http://machael.blog.51cto.com/829462/213477 上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包.最后部分还看到.src.rpm的内容,实际上 就是由.tar.gz源码.补丁软件和.spec脚本组成的.由此知道,使用.spec生成rpm包是比较简单的,因为.src.rpm通常都是由软件开 发者或者第三方的专业制作人根据源码调试好的,所以,只要处理好平台兼容性和相关的版本,不会遇到太大的问题.   但我觉得单纯明白用.spe…
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码.链接的时候不通过拷贝来进行. 2.链接过程 gcc –shared –o libxxx.so xxx.o 经过编译链接就可以生成动态链接库,其扩展名为.so Eg. 还可以gcc –fPIC –shared -o libhello.so hello.c 举个例子: //Hello.h //hello…
我们使用 go help buildmode 可以看到 go 可以以多种方式进行构建,默认使用静态链接库. ➜ src go help buildmode The 'go build' and 'go install' commands take a -buildmode argument which indicates which kind of object file is to be built. Currently supported values are: -buildmode=arc…
go build 和 go install 都需要使用源码来进行编译.但是有时候我们只有.a或者.so文件.并不能获取到第三方库的源码,这时我们需要静态链接库编译的技巧: 上图是实验前的文件分布. 使用静态链接库编译命令: ➜ src go tool compile -I ../pkg/darwin_amd64/ callyx.go ➜ src go tool link -o call2 -L ../pkg/darwin_amd64/ callyx.o 实验后文件分布: 由图中我们可以看到,可执…