dlopen相关内容

如何从GNU / Linux中的可执行文件导出特定符号

通过 :: dlopen()加载动态库时,从可执行文件中导出符号可以通过 -rdynamic 选项,但它导出可执行文件的所有符号,这导致更大的二进制大小。 有没有方法只导出特定的函数? > 例如,我有testlib.cpp和main.cpp如下: testlib.cpp extern void func_export(int i); extern“C”void f ..
发布时间:2016-10-25 15:53:07 C/C++开发

Ld魔术地覆盖静态链接的符号

几天后,我们处理了一个很奇怪的问题。 我不明白这是怎么发生的 - 当第三方我们的共享库,它以某种方式覆盖我们的一些符号(提高,精确)与它自己的。这些符号是静态链接和(!!)本地。 这里是交易 - 我们使用boost 1.47,MATLAB有boost 1.40。目前,库调用segfaults从我们的图书馆到他们的提升(regex)。 因此,这里是神奇的: 我们没有库依赖项, ..
发布时间:2016-10-24 14:20:34 C/C++开发

动态库和主程序中的静态类变量

我正在开发一个包含静态stl容器类的类'A'的项目。这个类包含在我的主程序和.so文件中。该类使用默认(隐式,未声明)构造函数/析构函数。主程序使用dlopen()加载.so文件,并在其析构函数中调用dlclose()。当glibc调用静态类成员变量的析构函数时,程序在主退出之后崩溃。问题似乎是,当dlclose()被调用时,静态变量的析构函数被调用,然后当main exits()glibc也调用 ..
发布时间:2016-10-23 20:16:35 C/C++开发

动态库和主程序中的静态类变量

我正在开发一个包含静态stl容器类的类'A'的项目。这个类包含在我的主程序和.so文件中。该类使用默认(隐式,未声明)构造函数/析构函数。主程序使用dlopen()加载.so文件,并在其析构函数中调用dlclose()。当glibc调用静态类成员变量的析构函数时,程序在主退出之后崩溃。问题似乎是,当dlclose()被调用时,静态变量的析构函数被调用,然后当main exits()glibc也调用 ..
发布时间:2016-10-23 20:02:19 C/C++开发

在Linux上的共享库中的单例的多个实例

我的问题,正如标题所提到的,是显而易见的,我详细描述场景。 在singleton.h文件中有一个名为singleton的单例模式实现的类: / * * singleton.h * *创建日期:2011-12-24 *作者:bourneli * / #ifndef SINGLETON_H_ #define SINGLETON_H_ class sin ..
发布时间:2016-10-22 17:16:34 C/C++开发

dlclose()不能与工厂函数&复杂静态函数?

我做中,我希望能够dlopen()的一个简单的插件框架的共享库(即插件),检查和使用任何工厂的功能是提供并最终dlclose()它,不留痕迹。 我的工厂系统很简单,只有一个导出函数返回一个指向公共Base类的指针。要检查插件已被正确卸载,我有一个静态对象的析构函数设置从主程序一个bool 下面是主程序: // dltest.cpp如下。编译g ++ -std = c ++ 0x ..
发布时间:2016-10-20 09:05:20 服务器开发

动态加载无外部“C”

我想使用libdl来动态加载C ++。 如上所述,一个解决方案是使用extern“C”删除名称调整。 http://www.tldp。 org / HOWTO / C ++ - dlopen / theproblem.html 此解决方案具有将动态加载的资源限制为C样式接口的缺点。动态加载的函数不能,例如,是重载的函数。 什么是克服这个限制的好方法? 一个可能的解决方 ..
发布时间:2016-10-19 21:05:09 C/C++开发

C ++:dlclose不会卸载共享库

我有一个共享库加载使用 dlopen (与标志 RTLD_NOW | RTLD_GLOBAL )。 如果此库使用主程序中的函数,则不会卸载。所以我最终得到这个共享库的相同的代码,即使我卸载(使用 dlclose ),更改,编译,(重新)加载它。 b $ b 我的目标实际上是在更改后重新加载同一个库,所以我不必重新启动整个程序来测试我的代码。 我在Linux Ubuntu 10.04上使 ..
发布时间:2016-10-17 11:10:03 C/C++开发

共享对象无法在主二进制,C ++中找到符号

我正在尝试为我编写的程序制作一种插件架构,在我第一次尝试时遇到问题。是否可以从共享对象中的主可执行文件访问符号?我认为以下情况会很好: testlib.cpp: void foo(); void bar()__attribute __((constructor)); void bar(){foo(); } testexe.cpp: #includ ..
发布时间:2016-10-17 10:20:01 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++

给Valgrind的错误,但无法找到位置

作为SO本身。其惊人的工具,建议由某人我一直在使用的valgrind 开始仅仅一天前,但今天我有一个问题与it.It提供了以下错误:肯定失去了字节,但无法分辨错误的位置 下面是输出的valgrind : udit @ udit-Dabba〜$的valgrind --leak检查=全sendip -v -p的IPv6 -f file.txt的-6S :: 1 -p啊-as 0x20的-aq ..
发布时间:2016-08-23 11:45:57 C/C++

为什么包括未定义的引用外部VAR和funcs中结果的.h文件

如果我想这些外部在使用dlopen运行时解析是什么? 我试着去理解为什么包括.h文件,共享库外部的VAR和funcs中,在未定义/未解决的一个C可执行程序的结果。 (链接时) 为什么我要“-lsomelib”标志添加到海湾合作委员会的联系,如果我只希望这些符号在运行时得到解决。 这是什么的链接时,链接器需要这些deffinitions决议。为什么不能使用dlopen时,等待在运行时的分辨率。 ..
发布时间:2016-08-23 11:27:18 服务器开发

如何在GNU / Linux的可执行文件导出特定符号

虽然通过加载动态库::的dlopen(),从可执行文件导出元件可以通过 -rdynamic 完成选项​​,但出口可执行文件,这将导致更大的二进制大小的所有符号 有没有只导出特定功能(S)的方式? 例如,我有如下testlib.cpp和mai​​n.cpp中: testlib.cpp 的extern无效func_export(int i)以;为extern“C”无效func_test(无效) ..
发布时间:2016-08-22 15:54:30 C/C++开发

的dlopen - 未定义符号错误

我使用dlopen加载在运行时的共享库 的dlopen(“SharedLibarary1.so”,RTLD_NOW | RTLD_GLOBAL); 在该共享对象我指的是一个const char *在另一共享库“SharedLibarary2.so”中定义。 可执行文件,并且这两个库是使用内置-rdynamic 但使用dlopen时,我仍然得到运行时错误:“/usr/lib/SharedL ..
发布时间:2016-08-22 15:07:27 服务器开发

返回共享库的符号表

例如: 无效* sdl_library =的dlopen(“libSDL.so”,RTLD_LAZY); void *的初始化=的dlsym(sdl_library“SDL_Init”); 如果没有错误,初始化将指向功能SD_Init共享库libSDK.so。 然而,这需要了解符号“SDL_Init”的存在。 它是可能来查询其所有的符号库?例如,在这种情况下,将返回SDL_Init,函数指 ..
发布时间:2016-08-21 20:22:58 C/C++

对dlsym /的dlopen与运行参数

我试图做类似以下 枚举类型{无,布尔,短,字符,整型,双,龙,PTR}; INT主(INT ARGC,字符**参数){ 枚举类型PARAMS [10] = {0}; void *的三角=的dlopen(“./ foo.so”,RTLD_LAZY); void *的乐趣=的dlsym(三角形,ARS [1]); <<伪code>> ..
发布时间:2016-08-21 20:05:15 C/C++

静态VS动态库

我看了一下静态和动态库。 我的问题是小specifie 的dlopen dlclose: 的dlopen的Benifit是,我们可以开始了EXE 在加载开始时必要的库。只有当我们 需要我们将加载libratries并从内存中卸载它。 这是动态链接libaries的行为。 我的问题是,如果我链接库libUtlities LD -o EXE main.o中-lUtilities 当 ..
发布时间:2016-08-19 00:22:38 C/C++开发