| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux操作系统:重定向和动静态库的自实现 -> 正文阅读 |
|
[系统运维]Linux操作系统:重定向和动静态库的自实现 |
shell重定向的实现之前博主完成了一个简单的shell命令程序:点击这里 但是这个函数是没有办法完成重定向功能的
当输入上述命令时,程序会发生报错。 程序更新后 如下:
上述程序仅为,重定向程序,另外注意需要把父进程解析命令行放入子进程中,要不然会发生重定向错误。
动静态库的实现前言
接着要使用gcc -c生成.o文件,接着新建一个目录test,将mylib.o和,mylib.h文件拷贝至该目录下 接着在该目录下建立一个test.c文件,该文件就可以通过引入mylib.h的方式,调用Myprintf函数实现功能。需要注意的是编译时注意加入mylib.o文件,因为编译时依赖这个文件
静态库现在我要实现一个静态库,我的库主要提供两个功能:加法运算和减法运算 依次创建add.c add.h sub.c sub.h四个文件
接着把所有的.c文件编译为对应的.o文件
现在有个test.c想使用method,其程序如下
PS:减法的函数+忘记改成-了,导致两者结果相同。 动态库
但是这并不能完成test的运行。 **这是因为,动态库和静态库不同,动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入。**所以编译器的确知道我们的库在哪,但是操作系统并不知道,所以要让操作系统知道这个路径才可以。 换句话来说,动态库需要操作系统将其导入内存,但是操作系统不知道其路径,用环境变量设置即可: 类比于环境变量PATH,操作系统也有这样的环境变量,以供操作系统搜索动态库:LD_LIBRARY_PATH。所以我们要把当前库的绝对路径导入到该环境变量之中。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 6:10:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |