如何在Linux下安装软件,以移植安装libjpeg解码库为例(总结)

2023-05-16

  首先,从软件官方网站或者其它渠道获取安装软件源码包,选择所需软件版本,解压放到一个自定义目录下。安装Linux软件通常需要如下三个步骤:


步骤一:
  ./configure
xxx  ----------------------首先进行一些配置相关的设置,xxx为一些可选参数,例如指定安装目录,是生成动态库还是静态库等。如果没有选参数,则为默认设置,就如Windows安装软件一样,默认是通常会装在c盘下的固定目录下。这里主要生成makefile文件

步骤二:
  make
              ----------------------编译链接项目,主要是把源文件生成.o文件,然后生成一个可执行文件

步骤三:
  make install
     ----------------------安装,生成库文件,这里会将源码下生成的库文件、头文件等复制到安装目录下,如果有指定安装目录,则复制到安装目录下,没有指定安装目录下则在默认下,推荐自定义安装,因为这样容易找到安装目录,也使目录文件看起来整洁一些。




例程:安装libjpeg解码库


  libjpeg是一个开源的jpeg解码库,图像压缩算法写的非常好。
  首先:获取libjpeg解码库的源代码,移动复制解压到Linux目录下。源码下载地址https://sourceforge.net/projects/libjpeg/files/libjpeg/6b/


  步骤一:进入源码目录,命令行输入:
    ./configure --prefix=/opt/my_jpeg --exec-prefix=/opt/my_jpeg --enable-shared --enable-static
  参数说明:
    '--prefix'是一个很常用的选项.制作出的'Makefile'会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 这里是指定安装目录/opt/my_jpeg;

    --exec-prefix与'--prefix'选项类似,但是他是用来设置结构倚赖的文件的安装位置.如果没有设置这个选项的话,默认使用的选项值将被设为和'--prefix'选项值一样.
    --enable-static:生成静态链接库。命名通常为.a文件
    --enable-shared:生成动态链接库。命名通常为.so文件

    动态库是运行时环境需要的,编译程序时不需要。静态库则是静态链接时才需要,动态链接时不需要。

    扩展:这里默认运行环境为本地Linux环境。如果安装软件支持多平台的话,要使用其它运行平台,比方说arm平台,则需要添加-host=arm,-build=i386来选择软件运行系统平台(平台版本不一样,参数可能也会有所不同),还需查看makefile文件检查设置的编译器是不是平台兼容的编译器,找到CC=gcc并改为CC=arm-none-linux-gnueabi-gcc,找到AR=ar rc并改为AR=arm-none-linux-gnueabi-ar rc,找到AR2=ranlib并改为arm-none-linux-gnueabi-ranlib。
    更多configure参数选项参考文章:http://www.chinaz.com/server/2009/0807/85792.shtml


  步骤二:源码目录下,命令行输入:
    make


  步骤三:源码目录下,命令行输入:
    make install
    这里会出现一个错误,提示没有找到文件夹,因为我们自己指定了安装目录/opt/my_jpeg,还没创建/opt/my_jpeg目录,创建好/opt/my_jpeg目录后,再make install,提示下一个错误:


       提示没有/opt/my_jpeg/include这个文件夹,这个文件夹是用来放一些头文件的,这里创建这个文件夹:

    mkdir /opt/my_jpeg/include
    继续make install,提示下一个错误:


    提示没有/opt/my_jpeg/lib这个文件夹,这个文件夹是用来存放库文件的地方,这里创建这个文件夹

    mkdir /opt/my_jpeg/lib
    继续make install,还会出现缺少/opt/my_jpeg/bin文件夹、/opt/my_jpeg/man和/opt/my_jpeg/man1文件夹,bin文件夹用来存放可执行文件,man1文件夹里面存放着一些说明手册,依次创建各个文件夹:
    mkdir /opt/my_jpeg/bin
    mkdir /opt/my_jpeg/man
    mkdir /opt/my_jpeg/man/man1
    继续make install,便可安装完成。


  安装完成之后,就可以进行代码测试了。使用制作好的动态或者静态链接库文件、安装目录下的头文件,需要导出库文件路径和头文件路径,不然编译会提示找不到路径。导出路径可以自定义,也可以直接复制库文件和头文件到系统默认已经导出的环境变量路径下(例如库文件可以放在/lib或者/usr/lib,头文件放在/include下,但是这样会不方便整理使用,推荐选择自定义导出环境变量路径)。

  通常在源码包里都会提供一个安装说明文档和软件使用说明文档(绝大部分是英文),如果移植一个软件,而网上又还没有人分享一些教程出来,我们看源码包提供的说明文档其实是最好的,也是最有参考意义的,毕竟这是原作者写的。其实,网上的那些的移植教程也是根据原作者提供说明文档修改的,只是把英文翻译成中文而已。看到一些英文文档,不要烦躁,要尝试去看,不会的单词可以借助一些工具查看,英文阅读能力和兴趣要慢慢地去提升,英文是绕不过的,跟英文过不去,不知不觉你会发现你跟别人差距会越来越大。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Linux下安装软件,以移植安装libjpeg解码库为例(总结) 的相关文章

随机推荐

  • 使用D435i相机跑ORB-SLAM2_RGBD_DENSE_MAP-master稠密建图编译(实时彩色点云地图加回环+保存点云地图)

    目录 前言系统版本 一 准备工作下载源码 二 编译 build sh1 删除一些build文件夹2 创建 Vocabulary 文件夹3 编译1 xff09 错误1 4 解决 段错误 xff08 核心已转储 xff09 改动一改动二 5 v
  • SLAM数据集TUM,KITTI,EuRoC数据集的下载地址与真实轨迹文件的查找

    目录 前言一 TUM数据集1 下载地址2 真实轨迹文件的查找3 轨迹格式 二 KITTI数据集1 下载地址2 真实轨迹文件的查找 三 EuRoC数据集1 下载地址2 真实轨迹文件的查找3 轨迹格式 前言 在SLAM的学习过程中 xff0c
  • 镭神16线激光雷达使用

    目录 一 创建工作空间二 进入src 下载驱动三 编译四 修改IP五 查看激光雷达点云 一 创建工作空间 span class token function mkdir span p leishen ws src 二 进入src 下载驱动
  • 使用D435i相机录制TUM格式的数据集

    目录 前言系统版本 一 使用realsense SDK录制bag包的情况1 录制视频2 提取rgb和depth图片1 2 3 对齐时间戳 二 用realsense ros打开相机录制bag包1 将深度图对齐到RGB2 使用realsense
  • 使用MeshLab软件处理pcd点云文件

    目录 前言1 安装MeshLab软件2 利用pcl库将pcd文件转成ply文件3 利用MeshLab旋转ply点云4 将ply文件转为pcd文件5 将ply文件转为pcd文件 xff08 添加读取配置文件版本 xff09 前言 在使用D43
  • 用C/C++读取配置文件的小例子

    这里提供了一个用C C 43 43 读取配置文件的简单框架 xff0c 具体内容可以依据自己的需要修改 GitHub上面的链接 xff1a https github com YuanpengDuan read config 新建一个文件夹
  • 洛谷P1080 [NOIP2012 提高组] 国王游戏

    此题用到的算法有贪心和高精度计算 高精度 高精度真的太折磨人了 xff0c 我搞了好久好久 xff08 PS xff1a python可跳过这一步 xff0c 它自带高精度 一开始我想用long long 但这个数据长度已经超过long l
  • Python中统一快速更换变量的名称

    首先 xff0c 选中需要更改的变量名称 xff0c 其次按下 Ctrl 43 R xff0c 就会出现如下的界面 其次输入你要替换成的变量名字 例如下方截图 xff0c 我要将num替换为str1 最后 xff0c 点击 Replace
  • Linux Qt程序打包

    前言 当我们在linux系统上开发一些工具时 xff0c 想快速分发给相关人员使用时 xff0c 我们可以把开发的相关依赖进行打包 xff0c 然后分发使用 xff0c 其中打包过程中遇到一些问题 xff0c 在没有安装Qt的机器上运行回报
  • word转pdf保持图片清晰度

    今天写论文的遇到两个问题 1 word插入的图片清晰度不够高 xff0c 放大之后不清晰了 2 word里面清晰度高 xff0c 但是转pdf之后放大不清晰了 问题1解决办法 xff1a word中 gt 插入图片 gt 右键选择图片 按照
  • c++字符串连接函数strcat_s

    格式 int a 100 61 0 int b 100 61 0 strcat s a b 功能 把字符数组2 b 连到字符数组1 a 后面 字符数组1必须足够大 连接前两串以 0 结束
  • Python语音合成探究(二、朗读文本的编码问题)

    语音合成时 xff0c 选取的朗读文本大多是网上收集来的TXT 文件 xff0c 有些文件会因为编码原因打开不了 xff0c 程序运行出错 如同样是 离骚 txt 文档 xff0c 用 with open 39 离骚 txt 39 as f
  • 关于Windows上的Android子系统安装

    Win11早些时候的版本公式里展示的安卓系统 Windows Subsystem for Android 简称WSA xff0c 现在可以在电脑中使用 xff0c 过了一年多的时间才想起还有个这种功能 xff0c 在安装时也是发现一些小细节
  • 大一上学期C++课程设计——学生成绩管理系统(QT项目)

    这里是一个大一的萌新 xff01 仅做学习分享 工程文件在评论区置顶 xff01 xff01 近期整理了一下大一上学期的课程设计报告作为学习总结 xff0c 使用的软件是Qt Creator xff0c 主界面效果如下图 QT具体环境如下图
  • 单片机控制直流电机(风扇)电路详解

    单片机引脚为什么无法直接控制电机或风扇 xff1f 我们在使用单片机去控制 43 5V的直流电机或者散热风扇时 xff0c 可能会有一种疑惑 xff0c 51单片机的引脚电压为 43 5V xff0c 为什么不直接用单片机引脚去驱动电机或者
  • [NOIP2002 普及组] 过河卒

    题目描述 棋盘上 AA 点有一个过河卒 xff0c 需要走到目标 BB 点 卒行走的规则 xff1a 可以向下 或者向右 同时在棋盘上 CC 点有一个对方的马 xff0c 该马所在的点和所有跳跃一步可达的点称为对方马的控制点 因此称之为 马
  • Qt学习笔记(5)

    目录 一 菜单栏 MenuBar 二 工具栏 ToolBar 三 状态栏 StatusBar 四 浮动窗口 DockWidget 五 右键菜单 六 托盘菜单 一 菜单栏 MenuBar 只能有一个 创建的最上方 菜单栏有两种方式可以创建 x
  • ftp 命令访问 ftp服务器

    服务端与客户端 登录到FTP服务器时 xff0c 你可以看到服务端的文件 xff0c 这个时候就要有一个区分 xff0c 一个是服务端 xff0c 一个是客户端 xff0c 你发起连接的这台电脑就叫做客户端 xff0c 要连接的FTP服务器
  • day13-面向对象3

    一 私有权限 封装的意义 xff1a 将属性和方法放到一起做为一个整体 xff0c 然后通过实例化对象来处理 xff1b 隐藏内部实现细节 xff0c 只需要和对象及其属性和方法交互就可以了 xff1b 对类的属性和方法增加 访问权限控制
  • 如何在Linux下安装软件,以移植安装libjpeg解码库为例(总结)

    首先 xff0c 从软件官方网站或者其它渠道获取安装软件源码包 xff0c 选择所需软件版本 xff0c 解压放到一个自定义目录下 安装Linux软件通常需要如下三个步骤 xff1a 步骤一 xff1a xff1a configure xx