设为首页 收藏本站
查看: 509|回复: 0

[经验分享] linux软件编译安装相关简介

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-19 10:55:40 | 显示全部楼层 |阅读模式
1.linux下C程序的原始码通常以c作为后缀(cpp是C++的后缀,gcc会根据后缀来加载不同的链接库

2.程序编译的几个相关概念:
        1)源码:程序代码,人类可以看得懂的程序语言
        2)编译程序:源码编译后的机器可以看得懂的代码,通常以o作为后缀
        3)可执行文件:经过编译程序编程二进制程序后,机器看得懂的可执行的档案。
3.make相关介绍:
        1)make指令执行后,会去找Makefile,通常软件开发商都会写一支侦测程序来侦测用户的作业环境,以及该作业环境是否有软件开发商所需要的其他功能,该侦测程序侦测完毕后,就会主动的建立这个Makefile的规则档案,通常这支侦测程序的文件名为configure或者config
        2)侦测程序要侦测的内容有:
                是否有适合的编译程序可以编译软件的程序代码
                是否已经存在本软件所需要的函式库,或其他的相依软件
                操作系统平台是否适合本软件,包括linux的核心版本
                核心表头定义档是否存在(驱动必须要的侦测)
        3)同一款软件在不同的平台上安装需要重新编译。
4.gcc [-cO] [-l函式库] [-L/函式库目录][Ipath] [-Wall] [-o targetfile] sourcefile:编译程序,选项,
        1)-c:编译程序,生成*.o文件
        2)-o:链接程序,产生可执行的文件,此时需要指定要生成的文件.
        3)-O:可以优化程序,提高性能
        4)-Wall:产生详细的编译信息
        5)-l:加入某个函式库,m代表libm.so这个动态链接库
        6)-L:后接路径,表示函式库要从哪里去查找。
        7)-I:后接include要查找的目录
5.#include<stdio.h>:这句话的意思是将一些定义的数据由stdio.h这个档案读入,这包括printf的相关设定,这个档案其实是放在/usr/include/stdio.h的。
6.make指令的优点:
        1)简化编译时所需要下达的指令
        2)若在编译完成之后,修改某个原始码档案,则make仅会针对被修改了的档案进行编译,其他的Object file不会被更动。
        3)最后可以依照相依性来更新执行档。
7.makefile解读:
        1)基本格式:
                target:目标文件1 目标文件2
                <tab> gcc -o 欲建立的执行文件 目标文件1 目标文件2
        2)target是我们要建立的信息,而且目标文件就是具有相关性的object files,那建立执行文件语法就是以<tab>按键开头的那一行,命令行必须要以tab按键作为开头才行
        3)makefile中用#代表注释,<tab>必须在命令行的第一个字符,target与相依档案(目标文件)之间以:隔开。
8.makefile中变量的基本语法:
        1)变量与变量内容以=隔开,同时两边可以具有空格
        2)变量左边不可以具有<tab>
        3)变量与变量内容在=两边不能具有:
        4)在习惯上,变量最好以大写字母为主
        5)运用变量时,以${变量}或$(变量)使用
        6)在该shell的环境变量可以被套用,例如CFLAGS。
        7)在指令模式也可以给予变量
9.当CFLAGS的内容指令列与makefile里面并不相同时,取舍关系如下:
        1)make指令列后面加上的环境变量为优先
        2)makefile里面指定的环境变量第二
        3)shell原本的环境变量第三。
10.一些特殊变量:$@代表目前的target。
11.tarball(压缩包)软件一般的安装方式:
        1)./configure:这个步骤是建立Makefile这个档案,通常程序开发者会写一支scripts来检查linux系统,相关的软件属性等,经过侦测后,生成一个与本地环境适应的Makefile文件。
        2)make clean:清除旧的编译文件(*.o)
        3)make:依据Makefile当中的预设进行编译行为。即将原始码编译为可执行的文件,而这个可执行文件会放置在目前所在的目录下,尚未被安装到预定的目录下。
        4)make install:依据Makefile这个档案关于install的项目,将上一个步骤产生的编译完成的数据安装到预定的目录中。
12.动态与静态函式库
        1)静态函式库:扩展名为.a,这类函式库在编译的时候会直接整合到执行程序当中,所以一般该方式生成的可执行文件会比较大些。另外这类函式库的最大优点就是可以独立运行,不依赖于其他函式库。但升级难度较大。
        2)动态函式库:扩展名.so,这类函式库当执行档要使用到函式库的机制时,程序才会读取函式库来使用,因此生成的文件会小一点。由于是动态读取,因此该模式的函式库独立性较差,不过升级比较容易。
13.将动态函式库加载到高速缓存中可以提高函式库的存取效能,具体步骤为:
        1)首先,我们必须要在/etc/ld.so.conf里面写下想要读入告诉缓存当中的动态函式库所在的目录(不是档案)。
        2)家下来则是利用ldconfig这个执行档将/etc/ld.so.conf的资料读入缓存当中。
        3)同时也将数据记录一份在/etc/ld.so.cache这个档案中。
14.ldconfig [-f config] [-C cache] [-p]:将动态函数库预先载入内存,参数:
        1)-f:指定library函数库的路径(文件),默认是/etc/ld.so.conf
        2)-C cache:指定cache的内容(文件名),默认/et/ld.so.cache
        3)-p:列出目前所有函数库资料内容(在/etc/ld.so.cache内的内容)
2.ldd [-vdr] [filename]:程序的动态函数库解析,参数,
        1)-v:列出所有内容信息
        2)-d:重新将资料有遗失的link点显示出来
        3)-r:将ELF有关的错误显示出来
3.md5sum/sha1sum [-bct] filename;md5sum/sha1sum [--status|--warn] --check filename:一种软件安装加密技术,参数,
        1)-b:使用binary的读档方式,默认为Windows/DOS 档案型态的读取方式。
        2)-c:检验档案指纹
        3)-t:以文字形式来读取档案指纹。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41041-1-1.html 上篇帖子: ubuntu14.10启用crontab日志 下篇帖子: include/asm is a directory,a simgpol is expected的解决方案 linux 软件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表