`

linux下动态库的编译使用

阅读更多
linux下动态库的编译

1 实践
test_cl.c:
  1 #include<stdio.h>
  2 #include <stddef.h>
  3
  4 extern int add(int a, int b);
  5 #define LabelAddr
  6 main()
  7 {
  8     int i = 0;
  9     printf("hello world!\n");
10     printf("label_abc=%d\n", &&label_abc);
11 //    i = &&label_abc;
12 //    goto *i;
13     goto *(&&label_abc);
14     printf("after goto\n");
15     label_abc:
16         printf("label_abc\n");
17        i++;
18
19
20     printf("add(a+b) = %d\n", add(1, 2));
21     return 0;
22
23 }


test_so.c
  1 int add(int a, int b)
  2 {
  3     return a + b;
  4 }


test_so1.c
  1 int add(int a, int b)
  2 {
  3     return a - b;
  4 }



1、
gcc -c -fPIC test_so.c
生成test_so.o
2、
gcc -shared -fPIC -o libtest_so.so test_so.o
生成libtest_so.so
3、
(rm test_so.o)
gcc test_cl.c -L. -ltest_so
4、
export LD_LIBRARY_PATH=`pwd`
5、
./a.out
结果是add(a+b) = 3
6、
(rm libtest_so.so)
gcc -shared -fPIC -o libtest_so.so test_so1.c
7、
./a.out
结果是add(a+b) = -1

(如果动态库依赖于其他的动态库不存在,在链接成可执行文件时才会报错)
(优先链接动态库的,除非用-static参数指定链接静态库)
分享到:
评论

相关推荐

    grpc-1.30.2 Linux 编译静动态库

    在 centos 7 下使用 gcc 4.8.5 + cmake 3.16.9 编译,包含 bin, include, lib, lib64, share 五个目录,可以直接在 linux C++ 程序中引用。 因为 grpc 编译比较麻烦,且依赖项较多,故而分享一下编译后的版本,本人...

    LINUX下简单的编译和使用动态链接库

    LINUX 下简单的编译和使用动态链接库 在 LINUX 下,编译和使用动态链接库是一项非常重要的技术。动态链接库,即 Shared Object(.so 文件),是将一些常用的代码,例如函数、类等,编译成一个独立的文件,供其他...

    Linux下qt动态库创建和使用

    本篇文章将深入探讨如何在Linux下的Qt环境中创建和使用动态库。 首先,创建动态库涉及以下步骤: 1. **项目设置**:在Qt Creator中,新建一个Qt Console Application项目。选择“New File or Project” -&gt; ...

    boost库1.68版本Linux下编译的动态库和静态库

    6. **使用编译好的库**:在项目中使用编译的Boost库时,需要链接对应的动态库(如`-lboost_thread -lboost_system`)或者静态库,并确保库的路径被系统搜索路径(`LD_LIBRARY_PATH`或`DYLD_LIBRARY_PATH`)包含。...

    Linux编译动态库和静态库

    总结,动态库和静态库在Linux下的编译和使用涉及的关键点包括`-fpic`、`-shared`、`-L`、`-l`、`ar`工具以及正确的文件命名规则。理解这些概念和操作对于Linux系统下的C/C++编程至关重要,能够帮助开发者更有效地...

    linux下g++编译与使用静态库和动态库

    Linux 下 g++ 编译与使用静态库和动态库 Linux 下 g++ 编译与使用静态库和动态库是 Linux 开发中一个非常重要的知识点。静态库(*.a)和动态库(*.so)是 Linux 下两种常用的库文件类型,了解它们的生成和使用方法...

    Linux下g++编译与使用静态库和动态库的方法

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成...

    Linux下编译使用QuaZIP

    QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开 测试环境: 国产操作系统 Deepin20、...

    Linux下QT MQTT库的编译安装详细步骤20210630.pdf

    网上大多都是Windows下的QT MQTT编译安装方法,Linux下有些不同,此文件是关于UBuntu和ARM Linux下QT MQTT库的编译安装详细步骤 -------------------------------------------------------- Linux版本:UBuntu 16.04...

    动态库编译及调用x_linux静态编译

    ### VS2015动态库编译及调用 1. **创建动态库项目**: - 打开Visual Studio 2015,通过“文件”-&gt;“新建”-&gt;“项目”选择“Visual C++”下的“空项目”。 2. **配置为动态库**: - 右键点击项目,选择“属性”,...

    Linux环境下编译的TensorFlow C++ API动态库文件.7z

    1、TensorFlow C++ API的编译是线上使用TensorFlow C++ API调用预先训练好的模型完成预测项目的必经之路...2、Linux环境下编译TensorFlow C++ API生成的动态链接库:libtensorflow_cc.so,libtensorflow_framework.so。

    Linux下编译的pcl库

    描述中提到,这个压缩包可能包含了大量的.so动态链接库文件,这是Linux系统下的可执行文件,用于程序运行时加载所需的函数和数据。由于库的大小超过3GB,表明PCL包含了许多模块和功能。编译PCL库通常需要较长的时间...

    linux下动态库的建立和使用

    "linux下动态库的建立和使用" Linux系统下动态库的建立和使用是非常重要的知识点。在Linux系统中,动态库是一种共享对象(Shared Object),以.so为后缀的文件。它们可以被多个程序共享,提高了系统的效率和灵活性...

    linux 动态库静态库

    通过压缩包中的"linux动态库及静态库的创建和使用"文件,你可以找到更具体的实践教程和示例代码,包括如何创建、链接和使用这两种类型的库,以及解决可能出现的问题。这些资料将帮助你深入理解和掌握Linux环境下的...

    tinyxml在linux下动态库的使用示例代码

    在Linux环境下,如果我们需要将TinyXML作为动态库来使用,以实现更灵活的部署和节省资源,本示例代码将指导你如何进行操作。 首先,确保你已经下载了TinyXML的源代码。在Linux系统中,动态库的构建通常涉及以下步骤...

    Linux下使用动态库小结

    ### Linux下使用动态库小结 #### 一、基本概念 在Linux环境下,动态库是一种重要的资源管理方式,尤其在嵌入式Linux开发领域中具有广泛的应用价值。本文旨在介绍Linux下动态库的基础知识及其使用方法。 **1.1 ...

    在linux下面生成动态库静态库

    ### 在Linux下生成动态库与静态库的知识点详解 ...通过上述步骤,我们可以看到在Linux下生成和使用动态库及静态库的具体方法。这对于开发跨平台应用、优化程序性能以及进行模块化设计等方面都具有重要意义。

    Linux下动态库研究及应用.pdf

    【Linux下动态库研究及应用】 ...总的来说,理解和掌握Linux下的动态库是系统开发的关键技能之一,它涉及到编译链接、程序运行时动态加载和环境配置等多个层面,对于提升软件的灵活性和可维护性具有重要意义。

    【QGIS跨平台编译】之【proj跨平台编译】:Linux环境下编译成果(支撑QGIS跨平台编译,以及二次研发)

    在Linux环境下使用。 既可以支撑QGIS在Linux环境下的编译工作,也可以进行proj的二次研发。 四、其他说明 在Linux环境下,基于Qt Creator进行编译的proj开源库。包含有头文件include、库文件so等,提供了Debug、...

    linux静态库和动态库

    ### Linux静态库与动态库详解 #### 一、引言 在Linux环境下,库是一种重要的软件组件,用于封装一组相关的函数或数据结构,以便于在不同的应用程序之间共享代码。库通常分为两大类:静态库(static libraries)和...

Global site tag (gtag.js) - Google Analytics