首页 > 系统相关 >Linux下动、静态库的创建和调用

Linux下动、静态库的创建和调用

时间:2023-01-04 15:46:56浏览次数:38  
标签:文件 调用 静态 double 下动 ++ Linux cpp Math

静态库

linux静态库命名规则:
image

静态库的创建

准备工作:
以一个简单的计算器demo为例,首先建立并书写以下三个文件:
image

  • Math.h 声明四则基本运算
#ifndef __MATH_H__
#define __MATH_H__
double add(double a,double b);
double sub(double a,double b);
double mul(double a,double b);
double div(double a,double b);
#endif
  • Math.cpp 定义四则运算的接口
#include "Math.h"
double add(double a,double b)
{
	return a+b;
}

double sub(double a,double b)
{
	return a-b;
}

double mul(double a,double b)
{
	return a*b;
}

double div(double a,double b)
{
	return a/b;
}
  • main.cpp 具体接口的使用
#include "Math.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{

    double a = 10;
    double b = 2;

    cout << "a + b = " << add(a, b) << endl;

    cout << "a - b = " << sub(a, b) << endl;

    cout << "a * b = " << mul(a, b) << endl;

    cout << "a / b = " << div(a, b) << endl;

    return 0;
}

静态库的创建步骤
1.将需要包含入库的文件编译成二进制文件

//默认生成 目标名称.o
g++ -c Math.cpp [-o Math.o]

2.使用ar工具打包静态库

ar -crv libmath.a Math.o 

生成静态库 libmath.a(库名math) 即可

静态库的使用

g++ main.cpp -L/home/lsq/my_lab/math(静态库存放的路径) -lmath(静态库名(无前后缀))
  • 使用运行文件
    image

动态库

linux动态库命名规则:
image

动态库的创建

仍用计算器demo的三个文件main.cpp, Math.h, Math.cpp来操作:
动态库的创建步骤
1.将需要包含入库的文件编译成二进制文件

g++ -fPIC -c Math.cpp

-fPIC 创建与地址无关的编译程序(pic,position independent code),是为了能够在多个应用程序间共享。
2.动态链接库

g++ -shared -o libdynmath.so Math.o

-shared 生成动态链接库文件

  • 也可以一步完成
g++ -fPIC -shared -o libdynmath.so Math.cpp

动态库的调用

与静态库调用相同

g++ main.cpp -L/home/lsq/my_lab/math(动态库存放的路径) -ldynmath(动态库名(无前后缀))

在调用之前需要让执行程序定位共享库文件!!!否则无法运行
两种方法:

  • 将库文件 libdynmath.so 安装到 默认路径(\lib或者\usr\lib) 即可;
  • 将其添加到 /etc/ld.so.cache 文件中,步骤如下:(注意权限!!!)
    1.将库文件存在的路径加到 \etc\ld.so.conf 中;
    2.ldconfig 重新加载 ld.so.cache 文件;

定位库文件后,即可运行程序

image

标签:文件,调用,静态,double,下动,++,Linux,cpp,Math
From: https://www.cnblogs.com/lsq47/p/17024727.html

相关文章

  • Linux删除多个java进程的其中一个
    一、背景:Linux后台运行了多个Java程序,进程名都是java。执行pkilljava会一次性杀掉所有的java进程。二、解决思路:1先通过一定的检索条件,定位出指定的java进程23......
  • Linux下rpm安装MySQL及配置
    Linux下rpm安装MySQL及配置xupeng1644已于2022-03-2211:38:47修改2747收藏15分类专栏:Linux文章标签:rpmMySQLLinux版权Linux专栏收录该内容55篇文章1订阅订......
  • linux动态库加载相关
    查看编译时会链接的动态库ldconfig-v|greplibCmp添加编译时的动态链接目录到终端环境,然后启动,这种方式可以为不同的程序配置不同的加载路径exportLD_LIBRARY_PA......
  • Java调用Linux命令(cd的处理)
    一、Java调用Linux系统的命令非常简单这是一个非常常用的调用方法示例:1publicStringexecuteLinuxCmd(Stringcmd){2System.out.println("gotcmd......
  • unity3d调用jar类中的方法和属性
    这里用的unity3d的版本是5.3.2在eclipse里新建一个java工程,并导出成jar。packagecom.innyo.androidplugin;publicclassapTest{publicapTest(StringinString){t......
  • 通过xshell在linux上安装nginx1.12.0
    0)环境安装Nginx是C语言开发,建议在Linux上运行,当然,也可以安装Windows版本,本篇则使用CentOS7作为安装环境。 0.1gcc安装安装nginx需要先将官网下载的源码进......
  • python调用项目外py文件问题及解决方案
    问题来源:为了支持模型的切换功能,拟通过调用不同模型路径下的predict.py方法来实现。这就涉及到调用外部py文件。调用外部py文件,有多种方式:方法一:sys.path1impo......
  • Linux系统查看文件地址常用的命令详解!
    在Linux系统中,是可以查看文件地址的,而且通过命令就可以完成,其中常见的命令是:whereis命令和which命令。那么Linux如何查看文件地址?本文为大家介绍一下详细的方法,快来看......
  • Linux环境下java环境变量配置简单说明
    第一步:到jdk包的路径下tar-xvfjdk-8u121-linux-x64.tar.gz-C/usr/lib/jvm第二步:cd/usr/lib/jvmls-ls查看下 第三步:配置环境变量vim/etc/profile按键i进入插入......
  • Linux系统 免密ssh登录配置及解释说明
    一、在需要登录的源机器上生成密钥(比如从A登录到B和C,就需要在A源机器上生成密钥,然后把公钥文件内容,复制到B和C目标机器上)(这就好比公司的指纹锁,你需要把你的指纹录入进去,......