花了一下午时间来看动态库和静态的使用,还好都看懂了,而且都实验成功了
linux 下静态库以.a结尾 动态库以.so结尾
下面是我的目录结构
main.c
stack3
stack.h
stack.c
pop.c
push.c
is_empty.c
1.静态库
cd stack3
gcc -c pop.c push.c stack.c is_empty.c
ar rs libstack.a *.o
cd ..
gcc main.c -L stack3 -lstack -Istack -o main
./main
2.动态库
cd stack3
gcc stack.c pop.c push.c is_empty.c -fPIC -shared -o libstack.so
(有些资料上写的 -c -o一起用,经测试不能一起用的)
cd ..
gcc main.o -L stack3 -lstack -Istack3 -o main
./main
(错误提示找不到libstack.so)
ldd main
(查看链接路径的时候也找不到)
cat /etc/ld.so.conf
(显示 include ld.so.conf.d/*.conf)
vim /etc/ld.so.conf.d/mytest.conf
(添加一行 /....../stack3/)
ldconfig
./main
(成功)
3.小知识
拷贝一个文件夹
cp -rf stack2 stack3
(不用mkdir stack3哦)呵呵,我是菜鸟,以前不知道
ps 我学习的资料大部分是linux c 一站式学习.pdf
相关推荐
在Linux环境下,静态库和动态库是两种常见的链接库形式,它们分别在编译和运行阶段发挥着不同的作用。 **静态库**在程序编译过程中会被链接到目标代码中,也就是说,最终的可执行文件会包含静态库中被引用的所有...
标题 "C++ protobuf debug release动态库和静态库" 涉及的是Google的Protocol Buffers(简称protobuf)在C++中的应用,特别是如何构建和使用protobuf的动态库和静态库。Protocol Buffers是一种数据序列化协议,允许...
"VC++调用动态库和静态库的详细指南" 动态库和静态库是C++程序设计中两个重要的概念,特别是在VC++开发中,它们扮演着非常重要的角色。本文将详细介绍如何在VC++中调用动态库和静态库,以便帮助初学者更好地理解和...
动态库和静态库是两种不同的库文件形式,动态库在运行时被加载到内存中,而静态库在编译时直接链接到目标代码中。 描述进一步说明这些库是由VS2015(Visual Studio 2015)编译的,并且是v1.6.1版本。这意味着库文件...
在Linux系统中,开发软件时常会遇到需要创建和使用动态库(.so)与静态库(.a)的情况。动态库允许多个程序共享同一份代码,节省内存资源,而静态库则将库代码直接编译进目标程序,不依赖外部环境。本篇将详细介绍在...
在本文中,我们将深入探讨OpenCV 4.4.0版本,特别是针对交叉编译、动态库和静态库的相关知识。 首先,OpenCV 4.4.0是该库的一个重要版本,它提供了大量的新功能、优化和性能提升。在这个版本中,开发者可以利用最新...
MyTest程序 调用 Dll1动态库,Dll1 同时调用 MyDll2动态库和Mylib1静态库。 最后,MyTest.exe 只需放置Dll1动态库和MyDll2动态库 程序在VS2015上编译的,亲自测试通过。
"linux C 动态库和静态库生成及使用笔记" Linux C 动态库和静态库是两种不同的库类型,它们在生成、使用和链接时有着不同的机制和要求。下面我们将详细介绍 Linux C 动态库和静态库的生成、使用和链接机制。 一、...
在C++编程中,库是预先编译好的代码集合,用于提供特定的功能,方便...总之,理解并熟练掌握C++的静态库和动态库的使用对于开发高效、可靠的软件至关重要。通过深入学习和实践,可以提升代码的复用性和项目的可维护性。
通过这种方式,你可以使用一个Makefile来管理编译过程,包括执行文件、静态库和动态库的创建。在maketest这个项目中,你可能会找到类似的规则和文件组织方式,用于演示这些概念。 总结,理解并熟练使用Makefile是每...
库分为两大类:静态库和动态库。iOS开发环境中,Xcode支持创建这两种类型的库,并且提供了丰富的工具来帮助开发者进行构建。 #### 静态库与动态库的区别 **静态库**在编译阶段就被链接到目标代码中,这意味着当...
库分为静态库和动态库,它们在程序编译和运行过程中起着至关重要的作用。本文将详细讲解这两种库的编写方法,以及如何在实际项目中应用它们。 **一、静态库** 1. **创建静态库** 静态库的文件扩展名为`.a`,在...
本篇将详细解析如何在CentOS 7环境下编译libwebsockets动态库和静态库,并探讨其在实际应用中的价值。 首先,让我们了解一下libwebsockets库。libwebsockets是一个C语言编写的WebSocket库,它支持HTTP和WebSocket...
本资源提供了在CentOS7环境下编译的OpenSSL 3.0版本的动态库和静态库,这将对需要在该操作系统上进行安全编程或系统集成的开发者非常有帮助。 首先,让我们深入理解OpenSSL 3.0。OpenSSL 3.0是一个重大的版本更新,...
"最新版的 openssl 1.0,编译好的静态库和动态库" 提供的预编译库文件,对于开发者来说,可以节省在本地编译的时间和资源,方便快速地集成到项目中。尤其是对于不熟悉编译流程或者环境配置复杂的用户,这是一个非常...
本资源提供了使用Visual Studio 2010编译的libcurl动态库(dll)和静态库,以及对应的debug和release版本,同时包含了完整的头文件,便于开发者进行C++项目集成。下面将详细介绍libcurl的编译过程、使用方法以及如何...
在本资源中,我们关注的是OpenCV 3.4.1版本,它已经在Visual Studio 2010环境下编译为适用于该开发环境的动态库和静态库。 在Visual Studio 2010中编译OpenCV 3.4.1是一项复杂的过程,涉及到多个步骤和配置。首先,...
本文将详细讲解如何编译OpenCV库,包括动态库和静态库的构建方法。 首先,确保你的系统已经安装了编译OpenCV所需的依赖项。在Linux环境下,可以通过`sudo apt-get install`命令安装以下组件: - `git`: 版本控制...
标题提到的是 OpenSSL 的一个特定版本——1.0.2h,针对 Windows 32 位系统的编译版本,包含动态库和静态库。 动态库(DLL - Dynamic Link Library)是Windows操作系统中的共享库,程序在运行时才加载这些库。在本例...
综上所述,静态库和动态库各有千秋,在实际开发中应根据具体需求选择合适的类型。了解两者的区别以及它们的工作原理对于优化应用程序性能和简化软件维护至关重要。通过合理利用这两种库类型,开发者可以创建出更加...