dynamic-linking相关内容

何时使用动态库与静态库

在C ++中创建类库时,可以在动态(.dll)和静态(.lib)库之间进行选择。它们之间有什么区别,什么时候适合使用? 解决方案 静态库会增加代码的大小二进制。它们总是加载的,你编译的代码的任何版本都是将运行的代码版本。 动态库单独存储和版本化。可能会加载动态库的版本,而不是您的代码随附的原始版本如果,更新被认为是与原始版本的二进制兼容。 另外,动态库不一定加载 - 它们通常在 ..
发布时间:2016-10-11 20:42:14 C/C++开发

用C允许动态加载库"发布]使用功能

我C语言编写一个程序,它允许用户实现自定义“功能”由各种各样的跨preTER运行。我也想允许用户在普通的C写这些自定义函数,然后在动态加载。为了做到这一点,我创建了两个结构,一个用于除preTED功能,一个是本地的。 下面是一个简单的例子: 结构func_lang { 布尔is_native; 字符*标识符; //其他各种性质 }无效的typedef(* func_na ..
发布时间:2016-08-24 14:48:41 C/C++

生成多个C ++和C对象文件单一的.so

让我们说我有一个C ++库code,一些定义包裹着的extern“C”{...} 。 我也有一个C库code它使用C ++库。 我想要做的是建立一个单一的.so文件,以便只有一个调用的dlopen 应该足以开始使用这个库。 下面就是我现在做的事:我第一次编译我的C ++库与 -shared -rdynamic -fPIC A .so文件。然后我编译我的C库与相同参数的.so文件。在那之后,我 ..
发布时间:2016-08-24 14:41:33 C/C++开发

什么时候.so文件被装载Linux呢?

我有一个共享对象(a.so)链接到我的可执行myexe。 a.so暴露的方法称为get_val(),它myexe使用。 现在,当a.so将被加载到myexe的进程地址空间?当myexe调用它get_val()API,或者当myexe被推出。 解决方案 有二(三)类型的库: 的静态库的(后缀: .A / 的.lib ),这本身变为二进制的一部分。严格来说,它不是全库,它是从哪个是满 ..
发布时间:2016-08-24 14:10:33 C/C++

在Windows -R和-rpath交换机链接

I,M用gcc编译器(MinGW的)在Windows XP.I生成的DLL库 libdir.dll 比我试图建立一个使用该库的程序。结果 我不想把这些.dll文件系统或System32文件夹中,也不路径PATH变量设置为它,我想要的就是给这些信息的程序本身。结果 我知道有一个 -R 和 -rpath 切换可用的,所以我跟他们中的一个会链接它。 首先-rpath:结果 的gcc -L / ..
发布时间:2016-08-23 11:12:35 C/C++

在静态内存分配VS C运行时的动态链接

我的程序的体系结构包括插件(DLL)和exe文件(显然)。我们是唯一的插件提供商。有人告诉我,在分配一个插件的内存,然后在EXE code释放,这是一个潜在的问题,如果我们静态链接的C运行时。但是,如果我们动态链接它,有一只堆和C运行时能够获得它的全部。我们切换到动态链接这个建议的基础上,但所有我们的看到的从交换机是与新运行时的分发和安装头疼和麻烦。 (不知道是什么,我们的避免的在内存分配问题条款 ..
发布时间:2016-08-22 15:40:28 C/C++

OpenCL的C / C ++动态绑定库(WIN32以上)

我给在OpenCL的一个尝试,而为了把这个产品,我想能够动态地绑定到OpenCL.DLL(Windows下时),以处理'优雅'的情况下没有OpenCL是安装在主机上。 是否有任何可用的库(或code段),负责这种动态的C或C ++结合的照顾,就像GLEW做的OpenGL?我想避免麻烦做自己。 谢谢, 解决方案 在这里你去: http://clcc.sourceforge.net/cl ..
发布时间:2016-08-22 15:21:33 C/C++开发

静态和动态链接相同的库

我有一个程序,是静态链接库( libA.2.0.a ),并动态地链接到另一个库( libB.so )。 libB.so 也是动态的链接到一个旧版本力霸( libA.1.0.so )。的 这是配置可以吗?如果是这样,系统怎样知道使用从 libA.2.0.a 我的程序的符号和符号从 libA.1.0.so 为 libB.so ? 解决方案 是的,这样的配置是可能的。 在回答你的问题,以系统 ..
发布时间:2016-08-21 21:56:58 C/C++

修补code /符号成一个动态链接ELF二进制

假设我有一个ELF二进制文件的动态联系,我想重写/重定向某些库的调用。我知道我可以用 LD_ preLOAD 做到这一点,但我想独立于环境的解决方案,在二进制的永久性,而且工程的setuid / setgid的二进制文件,其中没有一个 LD_ preLOAD 可以实现。 我想要做的是从另外的目标文件(可能在新的章节,如果必要的话)从这些目标文件添加code,并添加符号二进制的符号表,这样的新增版 ..
发布时间:2016-08-21 21:00:56 服务器开发

什么是-symbolic和-shared GCC标志之间的区别?

从文档的描述,他们似乎做同样的事情,只是“不是所有的系统”支持共享,“只有一些系统”支持符号(现在还不清楚,如果这些是同一套系统): -shared 产生,然后可以与其它对象链接的共享对象 形成一个可执行文件。并非所有的系统 支持此选项。对于predictable 结果,你还必须指定 同一组的选项被用来 产生code(-fpic,-fPIC或模型 子选项)当您指定此 选项​​ ..
发布时间:2016-08-19 16:10:28 C/C++

在Windows内插器

是否有可能替换系统功能,有可能在Linux和Solaris使用LD_ preLOAD 例如通过设置环境变量: LD_ preLOAD = /路径/要/ mymalloc.so 我有我的更换的malloc函数,而不是在已经安装在系统库的C运行时。在系统dll的所有其他功能将运行正常。 解决方案 微软研究院有一个名为库的弯路它允许你截获Win32 API调用。 走弯路是在x86,x ..
发布时间:2016-08-19 14:18:45 C/C++开发

编译自定义的malloc

我已经写它实现了一个自定义库的malloc /释放calloc / realloc的/自由使用标准的C原型,我想通了,如何把它编译成一个如此。我想通过链接反对一个标准的应用程序来测试库?什么是做到这一点的好办法?有一次,我有一个工作库我以为我可以只是LD_ preLOAD加载它,但我怎么得到我的功能与共存而是采取precedence在系统库的呢?我的功能需要进行调用malloc,以获得运行内存,所 ..
发布时间:2016-08-19 00:00:51 C/C++

无头的C程序

我写的“Hello World”程序用C 无效的主要() {printf的(的“Hello World”); } //注意,我没有任何包含头文件 该程序将警告编译为维克拉姆@维克拉姆工作室-XPS-1645:〜$ GCC的hello.c hello.c中:在函数'主': 的hello.c:2:2:警告:内建函数'printf的“不兼容的隐式声明 维克拉姆@维克拉姆工作室-XPS-1645:〜 ..
发布时间:2016-08-18 15:01:07 服务器开发

从内存dlopen的?

我正在寻找一种方式来直接从内存中加载生成的对象code。 我明白,如果我把它写入一个文件,我可以打电话的dlopen动态加载它的符号并将其链接。然而,这似乎有点迂回的方式,考虑到它在内存中开始了,被写入到磁盘,然后由dlopen在内存中加载。我不知道是否有某种方式来动态链接目标code存在于内存中。从我可以告诉可能有几种不同的方式来做到这一点: 天雷的dlopen以为你的记忆位置是一个文件 ..
发布时间:2016-08-17 22:22:53 C/C++

连接两个共享库的一些相同的符号的

我想用两个不同的共享库链接。这两个库定义共享的名称,但有不同的实现一些符号。我似乎无法找到一种方法,使每个库使用它自己的实现比其他。 例如,两个库定义全局函数巴()每个内部调用。图书馆一位来自 foo1称之为()和库从 foo2的两次调用它()。 Lib1.so: T吧 ŧfoo1()//调用杆() Lib2.so: T吧 ŧfoo2的()//调用杆() 如果我链接到我的应用程序 ..
发布时间:2016-08-17 21:29:47 服务器开发

覆盖使用LD_ preLOAD机制'的malloc“

我想写日志会调用malloc的到stderr(一种'​​命令mtrace“如果你愿意的)一个简单的共享库。 但是,这是行不通的。 这是我做的: / * * mtrace.c / #包括LT&;&dlfcn.h中GT; #包括LT&;&stdio.h中GT;静态无效*(* real_malloc)(为size_t);无效* malloc的(为size_t大小) { 无效* p = N ..
发布时间:2016-08-17 20:51:38 C/C++

静态链接VS动态链接

有什么令人信服的性能的原因选择了在某些情况下动态链接或反之亦然静态链接?我听说过或阅读以下内容,但我不知道够不上受到保证其真实性。 1)静态链接和动态链接之间的性能的区别通常是可以忽略不计。 2)(1)如果用一个使用配置文件数据来优化程序hotpaths一个分析,因为编译器与静态链接,编译器可以同时优化您的code和库code是不正确的。有了动态链接只有你的code可以优化。如果大部分的时间都 ..
发布时间:2016-08-17 20:28:37 C/C++开发

如何连接解决了动态库重复的符号?

我有两个动态库lib_smtp.so和和libpop.so等双方有一个名为全局变量协议被初始化为“SMTP”和“POP”分别。我有libhttp.a其中协议初始化为“HTTP”另一个静态库。 现在由于某种原因,我需要编译所有动态可链接和可加载库静态和包括可执行文件。这样做我得到错误的静态库的链接十一五“期间的多个符号的定义”。 我很好奇地想知道链接器如何解决,所有三提库越来越链接动态链接过程中 ..
发布时间:2016-08-16 13:32:49 服务器开发