zoukankan      html  css  js  c++  java
  • 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。
    [root@www ~]# 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.

    执行后是

    [root@www ~]# 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
    • [root@www ~]# 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 的项目,将上
    一个步骤所编译完成的数据给他安装到预定的目录中,就完成安装啦!

  • 相关阅读:
    实战,利用apache来做集群,实现负载均衡
    Paas
    mysql memcache
    JSP简单练习-定时刷新页面
    协定须要双工,可是绑定“WSHttpBinding”不支持它或者因配置不对而无法支持它
    ACM:图的BFS,走迷宫
    appium框架之bootstrap
    [JSP]JSP中include指令和include动作的差别
    cocos2d-x-3.1 win32程序-初识源代码(coco2d-x 学习笔记二)
    AT&T汇编语言——简单实例及工具演示
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5496718.html
Copyright © 2011-2022 走看看