首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux动态静态使用_静态使用

文章目录 动静态基本原理 认识动静态静态各自特征 静态打包与使用 打包 使用 动态打包与使用 打包 使用静态基本原理 动静态本质是可执行程序“半成品...认识动静态Linux下创建文件编写以下代码,并生成可执行程序。...在Linux下,我们可以通过ldd 文件名来查看一个可执行程序所依赖文件。...此时我们可以看到,libc-2.17.so实际上就是一个共享目标文件,准确来说,这还是一个动态。 在Linux当中,以.so为后缀是动态,以.a为后缀静态。...缺点: 使用静态生成可执行程序会占用大量空间,特别是当有多个静态程序同时加载而这些静态程序使用都是相同,这时在内存当中就会存在大量重复代码。

4.8K20

Linux】动静态制作与使用

一.静态制作 静态名称格式为:libxxx.a   注意 xxx 才是静态真正名字。...lib=libprint.a //静态名称 $(lib):print.o //生成静态 (依赖 .o 文件) ar -rc $@ $^ //使用 ar 命令 -rc 选项生成静态...四.动静态使用 我们先在 main.cpp 文件中使用一下静态 #include "print.h" //静态头文件 int main() { print_func(); //...静态中定义方法 return 0; } g++ main.cpp 编译这个文件,出现了这样结果:  很显然是找不到头文件,可是我们不是包含了头文件吗,怎么会找不到呢?...还是找不到,因为一个文件目录中可能有多个文件,我们必须要指定文件名字 -l(小写l)+静态名称(注意之间没有空格) 继续  g++ main.cpp -I Lib/include -

18010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux】动静态

    @TOC 动静态 1....设计 分为 静态(.a)和动态(.so) 命名 以c++为例 输入 ls /lib64/libstdc++* 以lib开头要去除 真实名字为 stdc++ ---- 一般云服务器...,默认只会存在动态,不需要动态静态需要单独安装 myadd.h 实现一个加法声明 #pragma once int myadd(int d1,int d2); ---- myadd.c...c/c++标准 还需要告诉名字是什么 ---- 将独立引入otherperson中 ,可以正常运行 第三方使用 第三方使用 1.需要是指定头文件和文件 2.如果没有默认安装到系统...- 告诉它需要链接mymath,就可以正常运行了,而不需要告诉头文件 将下载下来和头文件,拷贝到系统默认路径下,这个行为就叫做在Linux下安装 对于任何软件而言,安装和卸载本质是拷贝到系统特定路径下

    2.4K30

    Linux】动静态

    hello,大家好,今天我们继续学习Linux静态,我们将从不同角度来学习如何使用,并如何制作一个可供他人使用静态文件,并试着探究一下动态加载问题。那我们就开始学习吧!!...那么,Linux在什么位置呢? 如上便是我们使用所要吧包含所有的头文件。 接下来,我们回答几个问题: 问:1....准备工作完成,接下来,正式开始: 3.1静态静态链接 为了方便一些,我们创建一个makefile 我们直接把这个归档形成文件给使用者,使用者就可以使用了吗?不好意思,不可以。...由于默认使用是动态链接,这就意味着:当依赖中有一个是动态链接,整体就是动态链接静态链接静态方式吧代码拷贝过来,但最终整体是动态链接。...那我们使用静态函数,在程序加载到内存时,这些函数实现方法拷贝到哪里呢?

    8310

    Linux静态和动态

    制作静态 (1)朴素方法 — 不打包 下面我们实现两个简单方法,加法和减法计算方法,使用头文件和源文件分开形式呈现出来,例如: 那么这一堆头文件和源文件该如何形成一个静态给别人使用呢?...使用静态 (1)朴素方法 — 直接使用 上面我们可以形成静态了,那么我们该如何使用别人静态呢?...(2)使用打包好静态 我们在上面已经生成了一个打包好静态,现在我们将该压缩文件拿到用户这里: 然后对该压缩文件进行解压: 如上,我们就把静态拿到手了。...另外,如果别人给我们中既包含动态也包含静态,即同一个中提供动静态两种,gcc 默认使用动态!...首先我们要知道,在 Linux 下,形成可执行程序是 ELF 格式可执行程序,它其中包含有一张类似于符号表东西,里面包含各种函数依赖以及地址,符号表就是动态链接这些动态

    56710

    Linux静态和动态

    Linux为什么不允许普通用户给目录建立硬链接呢? 系统层面上有.和…硬链接指向目录。...一、动态静态 具体动态静态相关内容点击跳转 Linux一般分为动态静态静态(.a):文件以.a为后缀,程序在编译链接时候把代码链接到可执行文件中。...程序运行时候将不再需要静态 动态(.so):文件以.so为后缀,程序在运行时候才去链接动态代码,多个程序共享使用代码。...链接本质:无非就是我们调用库函数时候和标准是如何关联问题 名称:去掉前缀lib去掉后缀.so/.a剩下就是名称,比如libc.so就是C gcc 在编译时默认使用动态链接,而生成静态链接...那样太过于麻烦,为了让用户更好使用,我们就有把所有的.o文件打成一个包,给对方提供一个文件即可!把多个.o合并成一个文件,这个文件就是,把包方式不同就分为了动态静态*。

    29330

    Linux静态与动态

    由于windows和linux本质不同,因此二者二进制是不兼容。本文仅限于介绍linux。 2.种类 linux有两种:静态和共享(动态)。...二者不同点在于代码被载入时刻不同。静态代码在编译过程中已经被载入可执行程序,因此体积较大。共享代码是在可执行程序运行时才载入内存,在编译过程中仅简单引用,因此代码体积较小。...3.库存在意义 是别人写好现有的,成熟,可以复用代码,你可以使用但要记得遵守许可协议。现实中每个程序都要依赖很多基础底层,不可能每个人代码都从零开始,因此存在意义非同寻常。...4.文件是如何产生linux静态后缀是.a,它产生分两步 Step 1.由源文件编译生成一堆.o,每个.o里都包含这个编译单元符号表 Step 2.ar命令将很多.o转换成.a,成文静态...在linux下,文件一般放在/usr/lib /lib下, 静态名字一般为libxxxx.a,其中xxxx是该lib名称 动态名字一般为libxxxx.so.major.minor,xxxx

    8610

    Linux】详解动静态制作和使用&&动静态在系统中配置步骤

    二、动态静态制作和使用 2.1、静态制作和使用 先将我们.c文件或者是.cpp文件形成.o文件,指令为: gcc/g++ -c 要形成.o文件名 .c文件  假设在我当前目录下有...mystdio.o和mymath.o两个.o文件,要将这两个.o文件打包形成静态,我们要用ar指令 ar -rc libmyc.a(名字,.a后缀表示静态,真正名要去掉lib,去掉.a)mystdio.o...gcc -shared -o libmyc.so(名字,真正名要去掉lib和.so) mystdio.o mymath.o(所依赖.o文件) 但如果直接使用我们这个动态,同样会和我们之前使用静态一样发生链接错误...那么就同样要告诉编译器我们名字和所在路径(参考上面静态路径写法)。...但是,在ubuntu系统下你会发现,动态使用静态链接方法我们动态系统还是找不到(此处特制ubuntu系统,其它系统可能可以正常运行),这时我们就只能将我们动态拷贝到系统usr/lib目录下

    43410

    Linux】从零开始认识动静态 - 静态

    就是在我们中! 2 动静态概述 学习了这么多知识,我们有没有使用呢?...静态(.a):程序在编译链接时候把代码链接到可执行文件中。程序运行时候将不再需要静态 动态(.so):程序在运行时候才去链接动态代码,多个程序共享使用代码。...直白一点来讲,假如你想玩游戏,静态就是买一台电脑放在宿舍,动态就是去网吧与其他人共享。 Linux系统下基本都是使用动态: 接下来我们来详细说说静态和动态。...于是打包发给舍友,但是你舍友不会解包。突然,你想到个新办法!建立一个静态发给舍友!!! 这个静态如何使用呢?...这样使用一个静态就集合了大量.o文件方法!!! 总结: 所谓文件本质就是把.o文件打包 静态提高了开发效率,避免重复造轮子!

    13610

    静态和动态使用

    是一种可执行二进制文件,是编译好代码。使用可以提高开发效率。在 Linux 下有静态和动态静态在程序编译时候会被链接到目标代码里面。所以程序在运行时候不再需要静态了。...静态制作步骤: 编写或准备源代码 将源码.c 文件编译生成.o 文件 使用 ar 命令创建静态 测试文件 动态制作步骤: 编写或准备源代码 将源码.c 文件编译生成.o 文件 使用 gcc...表示在当前目录下去查找 运行测试 a.out 在动态使用是,系统会默认去/lib,/usr/lib 目录下去查找动态函数,如果我们使用不在里面,就会提示错误。解决这个问题有三种方法。...export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/topeet/debug/linux_ 我们加入环境后,运行 a.out 第三种方法: 修改 ubuntu...下配置文件/etc/ld.so.conf,我们在这个配置文件里面加入动态所在位置,然后使用命令 ldconfig 更新目录。

    99220

    linux 动态 静态_静态库里面包含动态

    动态静态 文件系统补完 文件三个时间acm 动态静态 动态链接与静态链接 静态与动态静态对比 生成静态 打包静态 使用静态 生成动态 打包动态 使用动态 文件系统补完...动态静态 我们在实际开发中,经常要使用别人已经实现好功能,这是为了开发效率和鲁棒性(健壮性);因为那些功能都是顶尖工程师已经写好,并且已经践行多年代码。 那么如何使用他人开发功能呢?...程序运行时候将不再需要静态。 而动态则是指程序在运行时候才去链接动态代码,多个程序共享使用代码。...动静态对比 动态被加载在内存中,可以供多个使用程序共享映射到自己虚拟地址空间使用,因此可以减少页面交换以及降低内存中代码冗余,并且因为与源程序模块分离,因此开发模式比较好。...生成静态 我们为什么会制作呢?一般是想让别人能够使用我们实现功能,但又不暴露自己源代码才会打包。那么接下来我们来学习如何打包静态

    7.4K20

    Linux共享静态、动态详解

    介绍 使用GNU工具我们如何在Linux下创建自己程序函数?...静态函数现在已经不在像以前用得那么多了,主要是共享函数与之相比较有很多优势原因。慢慢地,大家都喜欢使用共享函数了。...静态函数对开发者来说还是很有用,例如你想把自己提供函数给别人使用,但是又想对函数源代码进行保密,你就可以给别人提供一个静态函数文件。...理论上说,使用ELF格式静态库函数生成代码可以比使用共享函数(或者动态函数程序运行速度上快一些,大概1-5%。...在用ar命令创建静态库函数时候,还有其他一些可以选择参数,可以参加ar使用帮助。这里不再赘述。 一旦你创建了一个静态函数,你可以使用它了。

    8.9K11

    Linux静态与动态加载

    Linux当中,以.so为后缀是动态,以.a为后缀静态。 在Windows当中,以.dll为后缀是动态,以.lib为后缀静态。 认识了动态,那静态,又是什么呢?...,不再需要,但动态不行,在日常我们都会使用动态,很少使用静态。...*.o:  使用ar命令将目标文件打包成静态,下面我们使用ar命令-r选项和-c选项进行打包。...注意上面我打包了两个,虽然看后缀一个静态,一个动态,但是其实上述都是静态linux不是单单通过后缀来判断一个类型,下面就来看看如何真正打包一个动态吧。...打包:使用-shared选项将所有目标文件打包为动态 与生成静态不同是,生成动态时我们不必使用ar命令,我们只需使用gcc-shared选项即可。

    16310

    Linux】动态静态底层比较

    1 前言 我们前两篇文章讲解了如何建立动静态与如何使用静态。 接下来我们就来深入聊聊动静态。...2 编译使用比较 那么 gcc编译时候是怎么进行: gcc不加-static选项默认使用动态,没有提供动态就只能使用静态 gcc加-static选项就使用静态 那么-static意义是什么呢...将我们程序进行静态链接,这就要求我们链接任何都要通过对应静态版本!!! 一般我们操作系统都是动态 并且在对.o文件打包时候: 静态使用ar -rc 文件名......动态使用gcc -shared,前提是.o文件里进行-fPIC位置无关码设置gcc -fPIC -c 文件名 使用方法: 静态: 安装到操作系统中,.h 文件放入/user/include...静态很简单,不需要考虑这么多,因为在编译期间就把静态内容拷贝到了可执行文件当中。就不必谈论找到静态这一说了。动态就不一样,需要在运行过程中寻找与加载!

    21210

    Linux】动静态以及动静态链接

    环境:centos7.6,腾讯云服务器 Linux文章都放在了专栏:【 Linux 】欢迎支持订阅 ---- 链接扩展 我们在使用Linux时候,不禁会有这么一个疑问:为什么我们能够在...动静态与动静态链接 在Linux下共分为两种,一种是动态,另一种为静态。其实我们可以通过后缀就可以区分该是否为动态。...静态静态链接 感性理解 感性理解就是将网吧里我们最喜欢那台电脑给买回来,放在宿舍里供自己玩耍。...理性理解 静态专门让编译器对用户程序进行静态链接,在链接时,将静态中所需要完整代码给拷贝到自己可执行程序内部中。...就好比将网吧里想要那台电脑给买回宿舍,会很大占用我们私人空间(Linux中默认方式为动态链接,当然我们可以用gcc/g++编译时使用-static命令,来实现以静态链接方式运行。)

    4.8K50

    Linux之动态静态

    前言 一、动态静态概念 在之前文章中,介绍过动静态概念,因此这次我们只是简单回顾一下。 Linux分为动态静态。...名称:去掉前缀lib和后缀'.a/.so'剩下就是名称,例如:libc.so就是C。 gcc/g++,在编译时默认使用动态链接,如果想要生存静态链接,我们要带上-static。...三、制作静态 首先,如果写一个是否需要写main函数? 答案是不需要,因为是提供给别人使用,用户自己写main函数会与库函数起冲突。...动态相对于静态更节省内存,静态由多个程序使用相同库函数,加载到内存中就会导致内存中有多份重复库函数代码,而动态则是多个程序共用一份动态,不会导致出现重复库函数代码,就节省了内存空间。...总结 以上就是今天要讲内容,本文介绍了Linux静态相关概念。

    46220
    领券