`
cryolite
  • 浏览: 580487 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

静态链接与动态链接

 
阅读更多
基于gmp开发第三方库,后者以动态链接库(静态库?)对方式发布,
为了效率gmp建议对该库采用静态链接,
所以,目的是生成静态链接gmp库的库文件(动态库?静态库?)

一、生成可执行文件
1. 动态链接库的编译
Mac和linux都是:
gcc -o param_convention1 param_convention.c -lgmp

2. 静态链接库的编译
Mac是:
gcc -o param_convention2 param_convention.c -Wl,-no_pie /usr/local/lib/libgmp.a

linux是:
gcc -o param_convention2 param_convention.c -static /usr/lib/x86_64-linux-gnu/libgmp.a


二、生成动态链接库
Mac是:
gcc -bundle -flat_namespace -undefined suppress -o pc.so pc.c -Wl,-no_pie /usr/local/lib/libgmp.a
或者
gcc -dynamiclib -current_version 1.0 -o libpc.dylib pc.c -Wl,-no_pie /usr/local/lib/libgmp.a

生成可执行文件
gcc -o main main.c ./libpc.dylib -Wl,-no_pie /usr/local/lib/libgmp.a

gcc -o main main.c -dynamic -L. -lpc -Wl,-no_pie /usr/local/lib/libgmp.a

Linux是:
gcc -fPIC -shared -o libpc.so
生成可执行文件
gcc -o main main.c ./libpc.so /usr/lib/x86_64-linux-gnu/libgmp.a

不过虽然gmp不是动态库了,但是libpc还是动态库的方式发布,动态库对效率问题依然存在,似乎不会改善性能?
分享到:
评论

相关推荐

    动态链接与静态链接区别

    在这个过程中,动态链接与静态链接是两种基本的链接方式,它们各自具有独特的特性和应用场景。 ### 动态链接 动态链接是在运行时进行的链接过程,意味着在程序执行期间,所需的库文件会被加载到内存中,并与程序的...

    静态链接与动态链接(Linux)

    上一篇分享了静态链接与动态链接的实验(Windows):C语言动态链接与静态链接。这一篇分享Linux下的笔记,同时对上一篇笔记做一个补充。 首先,我们把静态链接与动态链接做一个这样子的比喻: 把链接过程看做我们...

    静态、动态链接库的创建和调用

    静态链接库在编译时期与应用程序链接,而动态链接库则在运行时期加载。 首先,我们来谈谈静态链接库。创建静态库的过程中,我们需要一个项目,通过添加需要封装成库的代码文件(例如C/C++文件)。创建完成后,编译...

    浅谈CMake配置OpenCV 时静态链接与动态链接的选择

    以上这篇浅谈CMake配置OpenCV 时静态链接与动态链接的选择就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:Android Studio中通过CMake使用NDK并编译...

    C++ 静态链接库与动态链接库

    链接库分为静态链接库(Static Library)和动态链接库(Dynamic Link Library,简称DLL)。这两种库各有其特点和适用场景,下面我们将深入探讨它们的创建过程、工作原理以及它们在实际项目中的应用。 **静态链接库*...

    静态链接库与动态链接库的区别

    ### 静态链接库与动态链接库的区别 在软件开发过程中,经常需要使用到库文件,这些库文件可以分为两大类:静态链接库(Static Library)和动态链接库(Dynamic Library)。这两种库的主要功能都是为了重用代码,...

    c++ 静态链接库动态链接库示例

    静态链接库和动态链接库是两种主要的链接库类型,它们各有优缺点,适用于不同的开发场景。本篇文章将详细探讨这两种链接库的概念、创建过程以及如何在C++项目中使用它们。 **静态链接库(Static Linking Library)*...

    动态链接与静态链接的区别

    动态链接与静态链接的区别 动态链接库和静态链接库是两种不同的链接方式,分别用于解决不同的编程问题。在这篇文章中,我们将详细地描述动态链接和静态链接的区别,以及加载时链接和运行时链接的区别。 静态链接库...

    动态链接和静态链接的问题

    动态链接和静态链接是软件构建过程中的两种关键技术,它们主要涉及到如何在程序执行时将所需的库函数加载到内存中。动态链接和静态链接的主要区别在于何时和如何整合代码资源,以及它们对程序大小、运行效率和依赖性...

    Linux C静态链接库与动态链接库编程简单介绍

    在Linux系统中,C语言的库分为静态链接库和动态链接库两种类型,它们都是为了实现代码重用和模块化设计的重要工具。本篇文章将深入浅出地介绍这两种链接库的原理、创建方法以及如何在程序中使用。 一、静态链接库 ...

    动态链接库和静态链接库区别

    动态链接库(Dynamic Link Library, DLL)和静态链接库(Static Link Library, SLB)是Windows操作系统中两种常见的库文件类型,它们在程序编译和运行时起着至关重要的作用。理解二者的区别有助于我们更好地进行软件...

    Linux C++编译及 静态/动态 链接库 笔记

    3. **静态链接与动态链接库**: - **静态链接**:在编译时,链接器会将所有依赖的库函数和数据直接嵌入到可执行文件中。这样生成的程序不依赖外部库,但体积较大。 - **动态链接**:程序运行时才加载所需的库,这...

    linux静态库和动态库

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

    Qt静态库与动态库创建与演示

    本教程将深入探讨如何在Windows XP环境下,利用Qt 4和MinGW编译器创建和使用静态库与动态库。 首先,让我们理解静态库和动态库的基本概念。静态库(.lib文件)是将库函数编译到目标代码中,形成一个完整的可执行...

    静态链接库lib和动态链接库dll区别

    静态链接库lib是将库中的所有指令都包含在最终生成的EXE文件中,而动态链接库dll则不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。 静态链接库的使用需要库的开发者...

    静态加载动态链接库

    .LIB文件是静态链接库,它包含了DLL的函数和变量的符号信息。在编译和链接阶段,编译器会将.lib文件中的函数和资源合并到最终的可执行文件中。这种方式的优点在于,确保了程序运行时不会因为缺失DLL而导致运行错误。...

    静态链接库与动态链接库的制作与使用

    "静态链接库与动态链接库的制作与使用" 本文将详细介绍静态链接库和动态链接库的制作和使用,包括函数库的概念、静态链接库和动态链接库的定义、制作和使用方法,以及在实际开发中如何正确地使用静态链接库和动态...

Global site tag (gtag.js) - Google Analytics