CentOS程序包管理(3)
应用程序的编译安装(C/C++)

为什么要进行应用程序源代码的编译安装?
    1.对应应用程序的程序包不能直接获取到;
    2.在已经编译好的二进制格式的程序的功能不包含我们所需要的;
    3.在已经编译好的二进制格式的程序中,包含太多的我们所不需要的功能;

软件项目管理工具:
    C/C++:make
        Makefile

应用程序源代码的分类:
    1.由程序员直接打包的源代码
        name-VERSION.tar.gz
    2.由第三方利用rpm工具制作的rpm源代码包:
        name-VERSION-release.src.rpm

源代码的组织形式:
    1.一个应用程序包含多个文件;
    2.某个文件中的不同的代码段之间,甚至不同文件的代码段之间都可能存在依赖关系;

应用程序源代码的编译过程:
    源代码 --> 预处理(预处理器,CPP) --> 编译(编译器,CC[gcc]) --> 汇编(汇编器) --> 链接(链接器) --> 用于执行操作的二进制程序文件

Makefile文件的功能:
    1.包含了各个程序源代码文件之间的关系;
    2.决定文件的编译顺序;
    3.使用哪个预处理器进程何种预处理操作;
    4.使用哪个编译器进程何种编译操作;
    ...

程序员通过使用专用工具,对于所有的源代码文件进行内容的分析和提取,并构建出一个同一的makefile文件的绝对模板,即:Makefile.in

有了这个模板,用户可以根据自己的需求,自行构建Makefile文件,从而可以实现个性化的编译过程;帮助用户生成Makefile文件的是一个名为"configure"的脚本;

开发工具:
    autoconf:帮助用户生成configure脚本文件;
    automake:帮助用户生成Makefile.in的模板文件;

建议:在获取任何源代码包并解压缩之后,要去读取其中随程序源代码提供的"INSTALL"或"README"类的文档文件,以获知该应用程序源代码的编译步骤;

开源应用程序的源代码的获取方式:
    1.官方自建的资源站点:
        apache.org(ASF)
        MariaDB --> mariadb.org
        varnish-cache.org
        ...

    2.代码托管站点:
        SourceForge
        Github
        code.google.com

Linux中进行C/C++源代码编译时使用的编译器:gcc,GNU C Compiler

在使用NAT模式联网进行软件包的安装的时候如果出现/var/run/yum.pid 已被锁定,PID 为 4040 的另一个程序正在运行等相同问题,则~]# rm -f /var/run/yum.pid
在执行安装命令~]# yum install gcc

编译源代码所需的开发环境:(程序包组)
    CentOS 7:
        Development Tools
        Compatibility Libraries

    CentOS 6:
        Development Tools
        Server Platform Development

注意:程序包组中所包含的开发环境并不是非常完整,如果某个应用程序在编译时有其他环境要求的话,需要安装对应应用程序的开发工具包;
    如果有rpm格式的开发工具包,其名称为name-devel-VERSION-release.rpm,则可以使用yum直接安装;
    如果没有对应的rpm格式的开发工具包,则需要优先编译安装开发工具;

编译源代码安装应用程序的三大步骤:
1.利用configure脚本生成Makefile文件;
~]# ./configure [option]...
--help
--prefix:选择程序安装的路径;
--enable-function:
--with-function:

2.使用项目管理工具"make"进行编译;
    注意:有一些应用程序在实施编译操作之前需要测试(make test)

3.使用"make install"命令进行编译后的二进制文件的最后的安装;

编译安装完成以后的收尾工作:
1.导出二进制文件的路径;
2.导出库文件路径;
3.导出头文件路径(可选);
4.导出帮助文件路径;

尝试编译安装httpd:(这些安装包首先要事先存在于你的系统内存当中,如果没有可以到相关网站进行下载)
1.安装apr
~]# tar xf apr-1.5.2-tar.bz2
~]# cd apr-1.5.2
~]# ./configure --prefix=/usr/local/apr-1.5.2
~]# make [-j 4]
~]# make install

2.安装apr-util
    ~]# tar xf apr-util-1.5.4-tar.bz2
    ~]# cd apr-util-1.5.4
    ~]# ./configure --prefix=/usr/local/apr-util-1.5.4 --with-apr=/usr/local/apr-1.5.2
    ~]# make [-j 4]
    ~]# make install

3.安装httpd
    ~]# tar xf httpd-2.4.29-tar.bz2
    ~]# cd httpd-2.4.29
    ~]# ./configure --prefix=/usr/local/apache-2.4.29 --with-apr=/usr/local/apr-1.5.4 --with-apr-util=/usr/local/apr-util-1.5.4 --with-pcre
    ~]# make [-j 4]
    ~]# make install

    注:因为需要pcre的支持,所以需要事先安装pcre-devel包;

收尾工作:
    1.导出二进制文件:
        创建一个文件:/etc/profile.d/httpd.sh
            export PATH=/usr/local/apache-2.4.29/bin:$PATH
    2.导出库文件:
        创建一个文件:/etc/ld.so.conf.d/httpd.conf
            /usr/local/apache-2.4.29/lib64
    3.导出头文件;
        创建符号链接:
            ~]# ln -sv /usr/local/apache-2.4.29/include /usr/include/httpd
    4.导出帮助文档:
        对于CentOS7来说,在导出二进制文件时已经自动导出了帮助文档;如果没有成功导出,则需要在/etc/man_db.conf文件中添加一行:
            MANPATH_MAP=/usr/local/apache-2.4.29/bin /usr/local/apache-2.4.29/man

        对于CentOS6来说,需要手动导出:
            在/etc/man.config中添加一行:
                MANPATH=/usr/local/apache-2.4.29/man

CentOS程序包管理、下的更多相关文章

  1. ios – 伞框架

    错误.应用程序,通常位于…错误仍然存在你也可以在这里添加(子)框架的路径.

  2. 如何在xcode 6中构建32位和64位的单二进制文件

    我已经遵循this堆栈溢出解决方案,但即使我得到低于警告.我已经选择虽然我得到了警告.请帮帮我.谢谢.解决方法有同样的问题.看起来将’arm64’添加到ValidArchitectures解决了它.

  3. ios – 将二进制文件上传到Apple的iTunesConnect时会发生什么?

    我问,因为:它可能指向我们可以做的事情来加快这个过程.大约一年前,这个过程从“缓慢,因为苹果的服务器功率不足”变得“非常缓慢,因为苹果公司使用的带宽是发送二进制文件所需带宽的3倍”.例如我最近提交了一个90Mb应用程序,Xcode4将超过350Mb的数据上传到Apple.例如刚才我提交了一个8Mb的二进制文件,Xcode4将超过40Mb的数据上传到Apple.最近上传者有了很大的改进.但我想知道:苹果在上传期间实际上做了什么?

  4. Xcode:将WorkspaceSettings.xcsettings添加到源代码管理中

    在Xcode中,更改文件>中的设置.工作区设置…

  5. 在iOS模拟器中查看源代码?

    有没有人知道我可以在Apple的iOS模拟器中检查网站源代码的工具?像Firebug或Chrome开发者工具这样的东西会很棒,我还没有找到任何东西.解决方法之前的旧答案已被删除,因为它们包含过时的信息.至少使用Xcode4和Safari6,在iPhone模拟器中打开Web视图,然后切换到桌面Safari.在Safari的“开发”菜单中,您将找到“iPad模拟器”菜单,该菜单允许您为模拟器中打开的页面打开SafariWebInspector!

  6. ios – iTunes Connect警告:“您的二进制文件不支持iPad”

    我刚刚将一个新的二进制文件上传到iTunesConnect,并将其添加到iOS版本的新版本.添加二进制文件并保存更改后,iTunesConnect会显示警告消息:“您的二进制文件不支持iPad,iPad的屏幕截图或应用视频预览将不会显示在AppStore上.”Xcode项目是使用Cordova3CLI生成的;自从应用从Cordova2迁移以来,上传的二进制文件是第一个Cordova3版本.该应用程

  7. ios – 二进制无效,二进制文件缺少体系结构[arm64]

    没有足够的信誉发布图像,请搜索“TimT”作为他的回复.更新:已经修复“是的,最近有一个修复程序应用于服务器,每个人都应该能够再次提交32位应用程序.–由TimT在同一个线程.我再次尝试,一切都很好.

  8. ios – 不能检查CGPoint是否不等于CGPointZero

    我有一个CGPoint在UIView类中声明,在我的viewController中,我尝试检查CGPoint是否不等于CGPointZero,但是我收到这个错误:二进制表达式(‘CGPoint'(又名’structCGPoint’)’和’CGPoint“)这是if语句:错误指向!=和我不知道为什么它给我一个错误.操纵杆是UIView类,CGPoint速度是这样声明的:@property(非原子)C

  9. 通用定制iOS框架使用Xcode 6.4

    我已经使用Xcode6创建了一个自定义的iOS框架.我尝试了许多脚本来使框架通用(用于模拟器和设备).但是它们都不适用于我.请告诉我一种方法来为iOS创建一个自定义的通用框架Xcode6.解决方法要通过终端将两个二进制文件合并成通用二进制文件:首先编译器件二进制,然后分别编译模拟器二进制.找到这两个二进制文件.如果你想检查哪些架构被编译成每个,你可以在终端中运行这个命令:lipo-info/pat

  10. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部