linux程序安装包----动态链接库的自动编译与安装

【Linux 应用开发】动态链接库路径管理:从编译时到运行时的RPATH与RUNPATH实战 本文深入探讨了Linux应用开发中动态链接库路径管理的核心技术,重点解析了RPATH与RUNPATH的实战应用。通过编译时配置、运行时调试及安全策略的详细讲解,帮助开发者解决库文件定位难题,特别推荐使用$ORIGIN相对路径和现代构建系统集成方案,确保应用的高效部署与跨平台兼容性。 阅读详情

制作linux下到安装包,常见的是.gz等这样的压缩包,在制作这样到安装文件到时候,可以从一个简单到例子实现:


--src(目录)

------helloworld.c

------inter.c

--lib(目录)

------maxnum.c

--include(目录)

------helloworld.h

------inter.h

------maxnum.h


一. 进入src目录进行相关配置

    (1). helloworld.c

  1. #include "helloworld.h"
  2. #include "inter.h"
  3. #include <stdio.h>
  4. int main()
  5. {
  6.     test_print();
  7.     
  8.     return 0;
  9. }
  10. void test_print()
  11. {
  12.     int num1 = 1;
  13.     int num2 = 2;
  14.     int max_num = max(num1, num2);
  15.     
  16.     printf("max_num: %d ", max_num);
  17.     print(max_num);
  18. }

    (2). inter.c

  1. #include "inter.h"
  1. int print(int num)
  2. {
  3.     printf("HAHA: num: %d\n", num);
  4.     
  5.     return 0;
  6. }

     (3) Makefile.am

  1. AUTOMAKE_OPTIONS=foreign
    INCLUDES=-I ../include

    bin_PROGRAMS=hello
    hello_SOURCES=helloworld.c inter.c
    hello_LDADD = ../lib/libmaxnum.la

 二。进入lib 目录配置

     (1)maxnum.c

  1. #include "maxnum.h"
  1. int max(int first, int second)
  2. {
  3.     return first > second ? first : second;
  4. }

       (2) Makefile.am

  1. AUTOMAKE_OPTIONS=foreign
    INCLUDES = -I ../include
    noinst_LTLIBRARIES = libmaxnum.la
    libmaxnum_la_SOURCES = maxnum.c

三.  进入include目录配置

       (1)  helloworld.h

  1. #ifndef __HELLOWORLD_H__
    #define __HELLOWORLD_H__

    extern int max(int first, int second);

    #endif

       (2)  inter.h

  1. #ifndef __INTER_H__
    #define __INTER_H__

    #include <stdio.h>

    void test_print();

    #endif

       (3)  maxnum.h

  1. #ifndef __MAXNUM_H__
    #define __MAXNUM_H__

    int max(int first, int second);

    #endif


四。返回主目录下,进行相关配置

       (1) Makefile.am

  1. AUTOMAKE_OPTIONS=foreign
    SUBDIRS=lib src


五。 运行相关操作

      (1) autoscan 生成configure.scan, 将其变成configure.in,  采用到命令: mv configure.scan configure.in,  修改configure.in

  1.  #                                               -*- Autoconf -*-
    # Process this file with autoconf to produce a configure script.

    AC_PREREQ([2.68])
    AC_INIT(hello, 1.1, [liuz@163.com])
    AC_CONFIG_SRCDIR([src/helloworld.c])
    #AC_CONFIG_HEADERS([config.h])
    AM_INIT_AUTOMAKE

    # Checks for programs.
    AC_PROG_CC

    # Checks for libraries.
    # FIXME: Replace `main' with a function in `-lcurl':
    #AC_CHECK_LIB([curl], [main])
    AC_PROG_LIBTOOL

    # Checks for header files.

    # Checks for typedefs, structures, and compiler characteristics.

    # Checks for library functions.

    #AC_CONFIG_FILES([Makefile
    #                 lib/Makefile
     #                src/Makefile])
    AC_OUTPUT(Makefile
                lib/Makefile
                src/Makefile)

        (2) aclocal   生成相关到文件

      (3)libtoolize -f -c  生成和lib库相关信息

     (4) autoconf

       (5) automake --add-missing

       (6) 经过上述步骤后,就可以生成我们需要到安装到文件,即: make dist         则生成我们需要到 hello-1.1.tar.gz 文件

    (7) 在第(5)后,可以先安装该文件,

             1.     ./configure      配置相关环境,生存Makefile文件

             2.   sudo make       编译makefile

             3.   sudo make install   则安装我们到文件,此时可以敲入: hello,  则可以显示我们到运行结果

             4.    sudo make uninstal   则卸载安装文件

红帽Linux安装ffmpeg 学习opencv为什么安装ffmpeg 如果需要视频处理和摄像头方面的支持,则需要安装ffmpeg,如果只是用opencv对静态图像进行处理,则可以不安装ffmpeg。1. 下载 ffmpeg 安装包http://ffmpeg.org/download.html#build-linux 因为通过添加yum源方式下载的rpm包版本较低,故使用 到官网自行下载最新版rpm包的方式安装。2. 解压 阅读详情

相关推荐

Linux网络管理利器iproute2手动编译指南:解决libmnl依赖与版本升级

在Linux网络管理与系统运维中,Netlink是内核与用户空间进行网络配置通信的核心机制,它通过一套高效的套接字接口实现网络状态查询与参数设置。其原理在于提供结构化的消息传递通道,使工具能够直接与内核网络子系统交互。这一机制的技术价值在于实现了对网络栈的精细控制,为流量控制、路由策略等高级功能奠定基础。在应用场景上,基于Netlink的工具如iproute2已成为现代Linux网络配置的事实标准,广泛应用于服务器运维、云计算及容器网络等环境。本文聚焦于iproute2工具集的编译实践,针对libmnl依赖

weixin_30291791的博客 308

静态库和动态链接库的安装(Windows环境)

静态库和动态链接库的安装(Windows环境)

GreatTang的博客 1909

dll安装方法

windows 加载不了jdk环境变量时候,缺少系统文件时候添加

linux环境下动态链接库的安装和使用

以libevent为例 wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz mkdir libevent_install tar xzvf libevent-2.1.12-stable.tar.gz -C libevent_install cd进去 ./configure sudo make sudo make install 库被安

jsc723的专栏 1773

ODP_dll_

dll 安装包 hobo hobo

【ENVI初学】查看影像空间分辨率及重采样

例如,如果线段长度为900米,对应的像素数量为30个,那么影像的空间分辨率为30米。通过计算长度与像素数量的比值,即可得到影像的空间分辨率。,在弹出的对话框中,输入重采样后输出文件的xy分辨率大小。在测量结果窗口中,可以看到该线段的长度以及角度。在影像上点击并拖动鼠标,绘制一条直线段。工具,选择要重采样的影像后点击ok。,避免了插值过程中光谱信息的改变。:最近邻插值法通过选择原始影像中。在ENVI中打开影像后右键选择。指示了每个像素的地理跨度(聚合为一个新像素,通常通过。方法一:查看影像的元数据。

weixin_41619112的博客 5571

【免费下载】 解决动态链接库缺失问题:Microsoft Visual C++ 2012 Redistributable Package 下载仓库推荐

解决动态链接库缺失问题:Microsoft Visual C++ 2012 Redistributable Package 下载仓库推荐 【下载地址】MicrosoftVisualC2012RedistributablePackage下载仓库 本仓库提供的是Microsoft Visual C++ 2012 Redist...

gitblog_09758的博客 1383

用Plecs搞定半桥LLC谐振变换器仿真:从开环模型搭建到闭环PI调参全流程

本文详细介绍了使用Plecs仿真工具进行半桥LLC谐振变换器从开环模型搭建到闭环PI调参的全流程操作。涵盖仿真环境准备、关键元件参数计算、波形异常排查、闭环控制实现及PI参数整定等核心内容,特别针对仿真中的收敛性问题提供实用解决方案,助力电力电子设计者高效完成LLC变换器仿真验证。

weixin_28455801的博客 570

Linux动态链接库的创建与使用

Linux动态链接库的创建与使用 1. 介绍     使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。       程序函数库可分为3种类型:静态函数库(static libraries)、共享函数

marken 1159

6万字嵌入式最全八股文面试题大全及参考答案(持续更新)

进程上下文定义:进程上下文包含了进程执行时所需的所有信息,包括 CPU 寄存器的值、内核栈、任务控制块(TCB)等。作用:当进程被切换时,需要保存当前进程的上下文,并恢复下一个将要运行进程的上下文。中断上下文定义:中断上下文是指处理中断时 CPU 所处的状态,包括中断发生时的寄存器值等。作用:当中断发生时,CPU 会自动保存当前的上下文信息,并跳转到相应的中断处理程序。示例表格上下文描述进程上下文包含进程执行时的所有相关信息中断上下文处理中断时 CPU 所处的状态线程同步定义。

大模型大数据攻城狮的专栏 7927

华为OD机试真题 新系统 9月20号 【字符串分组求和】

华为OD新系统机试真题【字符串分组求和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串分组求和】解析。

qq_45776114的博客 615

Linux下安装ffmpeg

下载ffmpeg 从ffmpeg官网:http://ffmpeg.org/download.html下载最新的ffmpeg安装包,然后通过如下命令解压: tar -jxvf ffmpeg-2.5.3.tar.bz2 或者用git从github下载: 配置 本文进行一个比较简单的配置: ./configure –enable-shared –p

chfe910的专栏 6956

基于STM32的浴室环境智能控制系统设计

摘要:本文设计了一款基于STM32F103的智能卫浴系统,通过多传感器协同检测浴室环境参数。系统采用DS18B20检测环境与卫浴温度,DHT11监测湿度,MQ-135检测空气质量,光敏电阻测量光照强度,D203S人体热释电模块检测人员存在。当检测到异常参数时,系统自动启动相应调节功能:温度异常时控制加热/制冷继电器,湿度过高时启动通风除湿,空气质量差时进行换气,光照不足且有人时自动开灯。系统支持按键、蓝牙APP和语音三种控制方式,可手动设置参数阈值、切换防雾模式、控制音乐播放等功能。实验结果表明,该系统能有

3254968421的博客 483

openssh升级编译安装,更新Openssh和openssl

openssh下载:https://www.openssh.com/ openssl下载:https://www.openssl.org/ 注:openssh需要配套openssl使用 软件包安装和编译安装的区别: 软件包安装: yum provides ssh //查看openssh安装包(系统默认已安装) yum install openssh -y ...

find_zh的博客 3861

【报错】raise pickle.UnpicklingError(_get_wo_message(str(e))) from None_pickle.UnpicklingError: Weigh

File "/opt/conda/envs/py_3.12/lib/python3.12/site-packages/torch/serialization.py", line 1470, in load raise pickle.UnpicklingError(_get_wo_message(str(e))) from None _pickle.UnpicklingError: Weights only load failed.

静谧、淡雅 782

在 SAP HANA 与 HANA Cloud 中,用 SQL DDL 创建数据库视图:从设计时工件到运行时对象的全链路实践

本文介绍了在SAP HANA中通过HDI容器使用DDL定义视图的方法。主要内容包括:1)采用.hdbview设计时工件存储视图定义,构建时自动转换为运行时视图,实现版本控制和权限隔离;2)开发前需准备HDI容器、MTA项目及配置.hdiconfig文件;3)详细说明.hdbview语法结构,重点讲解WITH READ ONLY和WITH STRUCTURED PRIVILEGE CHECK的使用场景;4)提供了从创建文件到构建验证的完整流程示例;5)强调跨容器访问时需通过.hdbgrants为#OO用户授予

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 273

编译链接、cmake和编译opencv

编译程序小结前段时间看了下cmake,这里以编译opencv3.1为例作一个简单的小结,顺便总结一下编译连接与库的知识,实践所得,没有系统验证。 编译、连接与库 编译、连接与库首先,编译连接的基本概念我事先是有的但是有些问题没有搞清楚。1.静态链接库和动态连接库的区别首先库就分动态连接库和静态连接库。比如说在程序里调用了一段第三方库的程序, 假如它是静态连接库的话,那在调用这段程序的时候就会把这段第

千念飞羽的专栏 1596

【OpenClaw企业级智能体实战】第27篇:Skill生态运营——企业私有Skill商店的搭建与审核机制

2026年ClawHavoc供应链攻击事件曝光超1200个恶意Skill渗透公共技能市场,工信部明确要求企业审慎使用第三方技能包并严格审查代码。本文基于真实安全事件与行业实践,完整讲解企业私有Skill商店从0到1搭建方案,覆盖小团队极简GitLab私有仓库、中大型企业Nacos 3.2私有Registry两种主流架构,配套企业级安全审核四步法、静态代码扫描规则、CI/CD自动化审计、数字签名校验与版本生命周期管理。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 499

Linux软件安装中RPM与YUM 区别和联系

Linux软件安装中RPM与YUM 区别和联系 1 Linux软件安装概述 安装程序的方式: 通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。 软件包管理器:如RPM。 软件包管理器的前端工具:如YUM。 源代码编译。 1.1 软件包概述 软件包的组成部分: 二进制程序,位于/bin, /sbin, /usr/bin, /usr/sbin, /us...

cxu123321的博客 221

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

7、Linux软件安装中RPM与YUM 区别和联系

1 Linux软件安装概述 安装程序的方式: 通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。 软件包管理器:如RPM。 软件包管理器的前端工具:如YUM。 源代码编译。 1.1 软件包概述 软件包的组成部分: 二进制程序,位于/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin等目...

w00347190的博客 306

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Linux软件安装,RPM与YUM

Linux软件安装,RPM与YUM 为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。 http://www.cnblogs.com/shijiaqi1066/p/3843955.html 1 Linux软件安装概述 安装程序的方式: 通用二进制格式:直接解压压缩文件,就可以使用。但一定要注意安装平台。 软件包管理器:如RP...

weixin_30872733的博客 110

linux 下 ffmpeg,Linux下安装ffmpeg

或网盘下载:https://pan.baidu.com/s/1zLbtjKcnxHGpWFCyvtxMhw 提取码:ks8n然后通过如下命令解压:tar jxvf ffmpeg-4.2.2.tar.bz2[root@xxxxxxxxxx]# tar jxvf ffmpeg-4.2.2.tar.bz2tar (child): bzip2: Cannot exec: No such file or ...

weixin_42353996的博客 741
上一篇: C语言中可变参数的用法——va_list、va_start、va_arg、va_end参数定义
下一篇: autoconf 和 automake 生成 Makefile 文件
goodspringin
博客等级 码龄14年 3粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值