首页
学习
活动
专区
圈层
工具
发布

【Linux系统】动静态库的制作

前言: 上文我们讲到了文件系统【Linux系统】详解Ext2,文件系统-CSDN博客 本文我们来讲讲动静态库的制作 库 【Linux】编译器gcc/g++及其库的详细介绍...:~/linux/动静态库的制作/new$ gcc -c *.c hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ls mstr.c mstr.h mstr.o my.c...hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ar -cr libmyc.a *o hyc@hyc-alicloud:~/linux/动静态库的制作/new$ ls libmyc.a...) 因为,我们只告诉了编译器gcc这些信息,但是并没有告诉操作系统!...解决方法: 1.将我们写的库直接拷贝到操作系统中 2.建立软连接:在操作系统中新建一个同名库,并将其与我们自己的库建立软连接 3.创建/修改环境变量:LD_LIBRARY_PATH

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

    Linux操作系统:软硬链接与动静态库

    前言: 我们上一篇文章已经讲完了文件系统,并把我们之前所学的进程,与文件系统关联了起来。而本节课我们将为大家带来有关于软硬链接与动静态库的有关知识点。...所以我们在linux下可以怎么对文件进行备份呢? 没错,就是进行硬链接就行了。...(父目录)本质上确实是硬链接,但它们是由文件系统内核直接管理的特殊硬链接,所以,一般来说这两个文件都会被隐藏起来。 三、静态库 库是写好的现有的,成熟的,可以复⽤的代码。...库有两种: 1、静态库 .a(Linux)、 .lib(windows) 2、动态库 .so(Linux) 、 .dll(windows) 那么,静态库是指的什么呢?...:动态库(在 Linux 中称为共享库, .so 文件)是程序运行时才加载的库文件。与静态库不同,动态库不会在编译时被直接嵌入到可执行文件中,而是在程序启动或运行时动态加载。

    25010

    【Linux】动静态库

    方法1: 首先我们需要将两个.c文件编译为.o文件: 形成两个同名的.o文件 首先我们来了解一个命令:ar ar命令是 Linux 下的一个归档工具,通常用于创建、修改和提取静态库(archive...这样就形成了一个静态库,但是这样我们还是用不了,我们还需要将库安装到系统当中: 首先我们需要将头文件拷贝到usr目录下的include当中,然后将静态库拷贝到lib64这个文件当中: 注意:...动态库的特点 文件扩展名: 在 Linux 系统中,动态库通常以 .so 为扩展名(Shared Object),例如:libmylib.so。...可以看见在lib64下建立软链接系统就可以找到我们库的位置了 第三种方法:通过控制环境变量来控制系统查找的规则 LD_LIBRARY_PATH 是 Linux 系统中用于指定动态库搜索路径的环境变量...动态库和静态库的优先级 在 Linux 系统中,使用 gcc 或类似工具进行编译和链接时,动态库(shared library, .so) 和 静态库(static library, .a) 的优先级由动态链接器和链接器的搜索顺序决定

    98710

    动静态库的制作与使用(Linux操作系统)

    注意:在静态库命名时开头必须是lib,结尾必须是 .a 中间的才是它真正的名字,比如这里的myc。 这样动态库就制作完了,即libmyc.a。...然后我们生成可执行文件时需要带以下选项,才能让系统找到库: -I:指定头⽂件搜索路径 -L:指定库路径 -l:指定库名 gcc -o exe code.c -I ..../mylib1/lib -l myc         以上写法未免也太麻烦,我们能不能让系统自己去找到它们呢?...当然可以,只需要我们把头文件放到/usr/include下,把静态库放在/lib64下,就能被系统的默认路径找到,如下: sudo cp ....我们可以使用以下四种方法让系统找到动态库:  拷⻉ .so ⽂件到系统共享库路径下,⼀般指 /usr/lib、/usr/local/lib、/lib64等。 向系统共享库路径下建⽴同名软连接。

    22310

    【Linux操作系统】程序的编译和动静态链接

    (动静态)链接 1.动态链接 2.静态链接 3.静态链接库的下载安装 4.windows下动静态库的后缀 一.编译 写在前面 编译这整个过程都只是在编译你自己写的代码,直到链接才让你的代码和库的代码关联起来...gcc test.c -o test//Linux-默认是动态链接的链接方式 file 可执行程序 ldd 可执行程序 //在linux中, ldd是list dynamic dependencies的缩写...静态链接方式 3.静态链接库的下载安装 动态库一般系统自带,因为系统运行时需要用到动态库 静态库在Linux中一般要自行安装 sudo yum install glibc-static//安装C...静态库 sudo yum install libstdc++-static//安装c++静态库 gcc test.c -o test -static//生成静态程序test 4.windows下动静态库的后缀...windows下动静态库的后缀: 动态库:.dll 静态库:.lib

    1.5K30

    【Linux】动静态库

    @TOC 动静态库 1....设计库 库分为 静态库(.a)和动态库(.so) 库的命名 以c++的库为例 输入 ls /lib64/libstdc++* 以lib开头要去除 库的真实名字为 stdc++ ---- 一般云服务器...,默认只会存在动态库,不需要动态库,静态库需要单独安装 myadd.h 实现一个加法的声明 #pragma once int myadd(int d1,int d2); ---- myadd.c...静态库打包 只有一个.o的压缩包 tar - c :创建一个新的归档文件即压缩包 tar- r : 若.c文件修改了,则对一个或者多个.o文件做替换 ---- 当前目录下包含 mylib otherperson...- 告诉它需要链接mymath库,就可以正常运行了,而不需要告诉头文件 将下载下来的库和头文件,拷贝到系统默认路径下,这个行为就叫做在Linux下安装库 对于任何软件而言,安装和卸载的本质是拷贝到系统特定的路径下

    3.1K30

    【Linux系统调用API】一、open与close函数

    一、系统API与C库函数的调用关系 当我们在C语言程序中调用一个库函数的时候,比如调用printf()函数,实际上它是通过文件指针来指向要打印的位置的。...并且,printf()函数会调用Linux的系统函数write()函数(它是一个系统接口,也可以人工调用),write()函数再继续调用sys_write()函数(这个函数只能是操作系统去调用),sys_write...实际上,在Linux下启动一个进程,就会默认打开三个文件描述符:0标准输入、1标准输出、2标准错误。它们分别对应C语言中的stdin、stdout、stderr。...在系统API中,主要包含了这些函数:与文件IO相关的函数接口(比如open(),close(),write(),read()等);与文件属性相关的函数;与目录操作相关的函数;与目录遍历相关的函数;还有dup...API。

    81310

    【Linux】动静态库

    hello,大家好,今天我们继续学习Linux中的动静态库,我们将从不同的角度来学习如何使用,并如何制作一个可供他人使用的动静态库文件,并试着探究一下动态库加载问题。那我们就开始学习吧!!...另外对于C/C++来说其库的名称也是有规范要求的,例如在Linux下:一般要求是lib + 库的真实名称 +(版本号)+ .so /.a + (版本号),版本号是可以省略不写的。...那么,Linux下的库在什么位置呢? 如上便是我们使用库所要吧包含的所有的头文件。 接下来,我们回答几个问题: 问:1....我们为什么可以在Linux下敲C语言代码呢?这是因为系统中有C语言所需的头文件和库文件。 交付库:将形成的归档文件和匹配的头文件都传给别人。...这是因为我们的动态库既没有在系统指明路径下,也没有在当前路径下(比代码所在路径深一层)。所以系统会找不到库的位置。

    89910
    领券