源码安装及移植 交叉编译

源码安装

源码是什么?
  • 脱离于linux具体发行版本的,实现特定功能的,需要编译生成目标文件的源代码.
为什么还要编译源码?
  • x86 架构,是有源维护的,arm-openwrt 也有源维护,arm-Raspberry Pi 也有源维护.但是linux适用的处理器架构多的要死,不能针对每一个处理器架构都搞一个给你直接装.
  • 如果你要体验最新的软件特性,可是,包安装并不提供最新的版本.

##源码安装流程

1/
  源码下载
2/
  源码编译
3/
  剥离调试信息
4/
  安装

##1源码下载

渠道1,一般不通过这种方式来获取源码来移植,因为这种方式得到的源码是很旧的代码
  • 在linux发行版命令行下运行命令得到源码
  /*ubuntu 下*/
  1.安装dpkg-dev(如果已经安装直接跳至2)
    1.1 sudo apt-cache showsrc dpkg-dev//查询当前镜像站点是否有dpkg-dev包,有执行1.2,没有执行1.1.1
  		1.1.1 apt-get update //刷新软件源,并执行1.1
    1.2 sudo apt-get install dpkg-dev//安装dpkg-dev
  2 sudo apt-cache showsrc xxx//查询查询当前镜像站点中是否有该源码包,有执行3,没有执行2.1
	2.1 apt-get update //刷新软件源,并执行2
  3 sudo apt-get source xxx //xxx处键入你想下载的软件包名
		//上条命令敲击之后,会下载三个文件(目前有两种情况),下载完成.在命令执行过程中,调用dpkg-source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在目录里面。
    	//若不能自动完成,sudo dpkg-source -x tree-1.5.1.2.dsc
    .orig.tar.gz 是软件原始源码包,没有经过任何修改; 
    .dsc 描述了源码包的信息,上述命令是解压源码和打补丁的综合操作。
    .diff.gz 是将源码包 debian 化的文件,包含一些补丁和编译规则;
    1. 一个.orig.tar.gz/一个.dsc/一个.diff.gz
        libid3tag_0.15.1b.orig.tar.gz
        libid3tag_0.15.1b-10build2.dsc
        libid3tag_0.15.1b-10build2.diff.gz//对源代码目录打补丁,可生成.debian.tar.gz拆包的目录
    2. 一个.orig.tar.gz/一个.dsc/.debian.tar.gz
        zlib_1.2.3.4.dfsg.orig.tar.gz
        zlib_1.2.3.4.dfsg-3ubuntu4.dsc
        zlib_1.2.3.4.dfsg-3ubuntu4.debian.tar.gz
渠道2
  • 源码官网下载源码
  • gnu的软件可以在这里找到.gnu ftp
0. 最好能翻墙,因为很多源码在国外网站
1. 最好用谷歌搜索引擎
2. 寻找合适的版本,一般寻找最新的版本,或者网上参考资源最多的版本
3. tar xzvf xxx.tar.gz

2源码编译

源码编译要考虑源码是怎么管理的编译,一般分为三种
1/
  makefile
2/
  autoconf
3/
  cmake
  • 如果是makefile 的话,直接 make;sudo make install就行了
  • 如果是autoconf 的话,请参考 autoconf
  • 如果是cmake 的话,请参考 cmake

3剥离调试信息

  • 如果要安装到pc机的上,是不用剥离调试信息的.
  • 如果要安装到板子上的话,可以剥离调试信息,用strip
//剥离调试信息
- 效果:使可执行文件和动态链接库变小

- 原因:几乎在我遇到的所有的代码里面,编译的时候都会有 -g 选项

- 1.剥离可执行文件调试信息

  arm-linux-strip sqlite3

- 2.剥离动态链接库调试信息

  arm-linux-strip libsqlite3.so.0.8.6

4安装

  • 如果要安装到pc上的话,直接 sudo make install 就行了
  • 如果要安装到板子上的话,复制到板子的根文件夹内,然后将目录形式的根文件系统做成文件系统镜像

- 移植是什么?
- 就是说将源码编译成适合目的平台的驱动,内核,动态库文件或应用.并打包入根文件系统
//板子下的 安装

- 将 sqlite3 复制到 /usr/bin/目录下

- 将libsqlite3.so.0.8.6 复制到 /usr/lib/目录下

- 将 sqlite3ext.h  sqlite3.h 文件复制到 /usr/inlcude/目录下

- 创建软链接

  ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

  ln -s libsqlite3.so.0.8.6 libsqlite3.so

- 注意:移植的时候没有必要移植.a文件,因为一般我们采用交叉编译,永远不会用到目标板上的.a文件
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gst-launch 是 GStreamer 的命令行工具,用于创建和运行多媒体流管道。移植交叉编译是将 gst-launch 工具从一个平台移植到另一个平台的过程。 在进行 gst-launch 移植交叉编译时,首先我们需要明确目标平台的体系结构和操作系统类型。例如,如果我们要将 gst-launch 移植到 ARM 架构的 Linux 系统上,我们需要选择相应的交叉编译工具链。 接下来,我们需要根据目标平台的操作系统和编译环境进行配置。这包括设置交叉编译工具链的路径和环境变量,以及为目标平台下载和配置必要的依赖库和头文件。 一旦环境配置完成,我们可以开始移植 gst-launch。首先,我们需要获取 GStreamer 源代码,并在交叉编译环境中进行编译。这通常包括配置、编译和安装 GStreamer,以及相关的插件和依赖库。 接下来,我们可以将 gst-launch 的源代码复制到交叉编译环境中,并进行编译和链接。这可能涉及到调整代码中的特定平台依赖项,以确保 gst-launch 可以在目标平台上正确运行。 一旦 gst-launch 成功编译和链接,我们可以将生成的可执行文件拷贝到目标平台上进行测试。我们可以使用适当的命令行参数来创建和运行多媒体流管道,以验证 gst-launch 在目标平台上的功能和性能。 总之,gst-launch 移植交叉编译涉及到配置交叉编译环境、编译和链接 GStreamer,以及修改和调整 gst-launch 的代码,以便在目标平台上正确运行。这样就可以实现在不同平台上使用 gst-launch 从命令行创建和运行多媒体流管道的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值