linux下源码编译步骤

我们知道在linux下编译源码一般步骤是根据本地的编译器和依赖库的路径编写Makefile然后make。但是一般的源码包解压后并没有Makefile。这也容易理解,毕竟源码作者并不知道使用者的编译环境,自然不可能写好现成的Makefile供其他人make。解决方案是利用shell脚本检测编译环境下的各种工具和依赖是否存在或版本是否支持,然后动态的生成Makefile。所以,这些源码包的编译主要是三个步骤:1、检测环境并生成Makefile;2、make;3、make install

检测环境&生成Makefile

源码包下的configure脚本完成动态生产Makefile的功能,在运行configure时需根据设定编辑器、编辑选项、依赖路径及其他配置项。具体支持的配置项可用./configure –help查看。为避免重复,可新建shell脚本执行./configure并传入参数。
例如编译pulseaudio时的执行命令如下:

./configure     CC=arm-poky-linux-gnueabi-gcc   \                                           
                CXX=arm-poky-linux-gnueabi-g++  \
                PKG_CONFIG_PATH=/home/SealedGhost/pkgconfig  \
                --host=arm-poky-linux-gnueabi  \
                --prefix=/home/SealedGhost     \
                --with-system-user=root        \
                --with-system-group=root       \
                --with-access-group=root       \
                --disable-ipv6                 \
  • CC:目标平台C编译器
  • CXX:目标平台C++编译器
  • –host:目标平台
  • –prefix:生成目录前缀
    其他配置项详情见 ./configure –help

这里介绍下PKG_CONFIG_PATH,此项为指定pulseaudio依赖包的配置文件路径的环境变量。对于依赖的包,./configure会在PKG_CONFIG_PATH目录下遍历所有的*.pc文件。.pc文件为包配置文件,里面描述了对应包的名称、路径和版本等信息。./configure就是通过.pc文件的内容实现对依赖包的检查。
一般地,诸如PKG_CONFIG_PATH的环境变量也可以定义在/etc/profile中,这样执行./configure时就不用附带这些参数了。

编译

./configure执行无误就可以直接执行make进行编译了,一般不会出什么错误,万一出现问题按照编译提示进行google就可以了

“安装”

所谓的安装可简单认为就是把编译得到的可执行文件、编译出的库文件以及配置文件和头文件等放在指定目录下,此目录默认的为–prefix指定的目录。通常会生成一下几种文件
bin/ 可在目标平台执行的可执行文件
lib/ 静态库和动态库文件以及前面提到的.pc文件。如果有其他项目依赖于编译的包的话,只需要将生成的.pc文件放在其他项目编译时指定的PKG_CONFIG_PATH路径下就可以啦
include/ 这个不必多说
etc/ 可执行文件运行所需的配置文件
此外还可能生成 doc/ share/目录等,不过一般我们不用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值