1.Tarball软件make与makefile详解(还需要补充)

*通常自己安装的软件放在 /usr/local/软件名   中,而将源文件放在/usr/local/src

*为安装到单独目录的软件之 man page 加入 man path 搜寻:
  如果你安装的软件放置到 /usr/local/software/ ,那么 man page 搜寻的讴定中,可能就得要在
  /etc/man.config 内的 40~50 行左右处,写入如下的一行:
  MANPATH /usr/local/software/man
  这样才可以使用 man 来查询该软件的在线文件啰!

*Tarball类的软件:用tar打包,然后压缩。通常里边会有:

  • 源代码
  • 侦测程序档案(可能是configue或config等名字)
  • 本软件的简易说明与安装说明(INSTALL和README)

一个软件的 Tarball安装的基本流程:  下载->将Tarball解开->gcc进行源码编译(产生目标文件object file)->用gcc进行函数库、主、子程序的链接,形成主要的二进制文件->执行二进制文件

a、编译和链接  

  • 编译 :  gcc -c a.c b.c   然后生成a.o和b.o(a.c和b.c依然存在)  
  • 链接:       gcc -o x a.o b.o 生成x这一个binary文件(.o和.c被链接到一起)。其中.o文件就是目标文件(object file)
  • gcc编译如果不加c或者o参数,默认生成a.out二进制文件

b、编译时加入函数库  

  • gcc a.c -lm -L/lib -L/usr/lib  -l表示加入某个函数库   -m是libm.so函数库,省略了里边于扩展名。
  • -L后面跟的是头文件放置的路径(系统函数库linux默认是放在/lib和/usr/lib)

1.make和makefile(使用make工具省略上面的安装过程)

  • 先编辑makefile这个规则文件,内容中要有main这个执行档
  • 当制作好makefile后,输入make命令会根据makefile中的内容去编译相关档案。

2.makefile的基本语法与变量

  • makefile 具有两个标的,分别是 main 和 clean ,如果我们想要建立main 的话,输入make main,如果想要清除有的没的,输入make clean即可啊!而如果想要先清除目标文件再编译 main 这个程序的话,就可以这样输入:make clean main。
[[email protected] ~]# vi makefile
main: main.o haha.o sin_value.o cos_value.o
    gcc -o main main.o haha.o sin_value.o cos_value.o -lm#建立新的规则,此规则的标的名称为 clean
clean:
    rm -f main main.o haha.o sin_value.o cos_value.

执行后是

[[email protected] ~]# make clean main
rm -rf main main.o haha.o sin_value.o cos_value.o
cc -c -o main.o main.c
cc -c -o haha.o haha.c
cc -c -o sin_value.o sin_value.c
cc -c -o cos_value.o cos_value.c
gcc -o main main.o haha.o sin_value.o cos_value.o -lm
  • [[email protected] ~]# vi makefile
    LIBS = -lm
    OBJS = main.o haha.o sin_value.o cos_value.o
    main: ${OBJS}
        gcc -o main ${OBJS} ${LIBS}
    clean:
        rm -f main ${OBJS}

    由 shell script 那时学到的『变数』来更简化 makefile

3.tarball软件安装的指令下达步骤

1> ./configure
这个步骤就是在建立 Makefile 这个档案啰!通常程序开发者会写一支 scripts 来检查你的 Linux
系统、相关的软件属性等等,这个步骤相当的重要, 因为未来你的安装信息都是这一步骤内完成
的!另外,这个步骤的相关信息应该要参考一下该目录下的 README 或 INSTALL 相关的档案!
2> make clean
make 会读取 Makefile 中关亍 clean 的工作。这个步骤丌一定会有,但是希望执行一下,因为
他可以去除目标档案!因为谁也不确定原始码里面到底有没有包含上次编译过的目标档案 (*.o)
存在,所以当然还是清除一下比较妥当的。 至少等一下新编译出来的执行档我们可以确定是使用
自己的机器所编译完成的嘛!
3>make
make 会依据 Makefile 当中的预讴工作迚行编译的行为!编译的工作主要是迚行 gcc 来将原始
码编译成为可以被执行的 object files ,但是这些 object files 通常还需要一些凼式库之类的
link 后,才能产生一个完整的执行档!使用 make 就是要将原始码编译成为可以被执行的可执行
文件,而这个可执行文件会放置在目前所在的目录之下, 尚未被安装到预定安装的目录中;
4>make install
通常这就是最后的安装步骤了,make 会依据 Makefile 这个档案里面关亍 install 的项目,将上
一个步骤所编译完成的数据给他安装到预定的目录中,就完成安装啦!

时间: 2024-11-05 13:40:58

1.Tarball软件make与makefile详解(还需要补充)的相关文章

Helloworld模块之内核makefile详解

Hello World 模块以及对应的内核makefile详解 hello.c: #include <linux/module.h> //所有模块都需要的头文件 #include <linux/init.h> // init&exit相关宏 MODULE_LICENSE("GPL"); MODULE_AUTHOR("feifei"); MODULE_DESCRIPTION("hello world module")

【Android】Android软件开发之ListView 详解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xys289187120.blog.51cto.com/3361352/657171 ListView的使用方法 ListView是Android软件开发中非常重要组件之一,基本上是个软件基本都会使用ListView ,今天我通过一个demo来教大家怎么样使用ListView组件 绘制出漂亮的列表,说道ListView就不得不说Adapter适配器,因为只有通过Adapter才可

Android软件开发之TextView详解

Android软件开发之TextView详解<IGNORE_JS_OP> TextView的API 中文文档中 说明它的结构 结构java.lang.Object   android.view.View        android.widget.TextView直接子类:    Button, CheckedTextView, Chronometer, DigitalClock, EditText间接子类:     AutoCompleteTextView, CheckBox, Compou

Makefile详解--隐含规则

Makefile详解--隐含规则(转) Makefile系列文章,这里有个前辈连续洗了一个系列来介绍,共有26篇博客文章. http://www.cppblog.com/ivenher/archives/2007/04.html Makefile隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译 C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件).本章讲述的就是一些在Makefile中的“

《GIS软件ShapMap源码详解及应用》概述

我喜欢GIS二次开发,即使有的人看不起:我不懂开源GIS,只会点商业的GIS,有的人更加瞧不起.我认为,我不能改变现实这个环境,但可以创造一些价值.找到一本<GIS软件ShapMap源码详解及应用>来学习,我倒要看看开源GIS是什么样子. 当前GIS软件有商业GIS系统及开源GIS系统之分.GIS商用软件功能强 大,有完善的技术支持,提供封装好的.功能强大的类库,基于商用GIS库进 行的二次开发效率高.难度低.资源丰富.但对于小型GIS开发人员,商用 GIS价格过高,对于GIS学习者来说,由于

LINUX&amp;nbsp;软件安装(rpm详解)

转自:http://www.51testing.com/?uid-227476-action-viewspace-itemid-99651 在使用Linux系统的过程中,软件包的安装是避免不了的,在Linux下,软件安装程序的种类很多,安装方法也各式各样,(舒适性自然比不上windows :-))不过我们常见的软件包有两种: 1)含有软件的源代码的压缩包,解压后需要手动编译.这种软件安装包通常是用gzip压缩过的tar包(后缀为.tar.gz). ./configure (配置) make (编

StreamSets学习系列之StreamSets的Core Tarball方式安装(图文详解)

不多说,直接上干货! 前期博客 核心安装包(Core Tarball) 该安装包包含核心的SDC软件,使该软件具有最小的软件连接器集合,当然你可以手动下载额外的节点(Stage) ①  通过Streamsets的UI进行安装,UI上点击的位置为:在该软件界面的右边(图标是一个礼物盒子...). ②  也可以通过使用CLI进行安装,安装过程如下所示: 第一步.下载该[核心安装包],比如版本为:streamsets-datacollector-core-3.3.0.tgz 第二步.解压该安装包 [[

16、Linux软件管理工具rpm详解

1 Linux软件安装概述 安装程序的方式: 软件包概述 RPM RPM的缺点 RPM包 RPM分包 RPM命令的使用 rpm 包管理 升级注意项 如何安装rpm软件包 如何卸载rpm软件包 如何升级rpm软件包 如何查询rpm软件包 如何查看与rpm包相关的文件和其他信息 如何校验rpm包 RPM的数据库 1 Linux软件安装概述 安装程序的方式: 通用二进制格式:直接解压压缩文件,就可以使用.但一定要注意安装平台. 软件包管理器:如RPM. 软件包管理器的前端工具:如YUM. 源代码编译.

【转】Makefile详解

概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完 成大型工程的能力. 因为,makefile关系到了整个工