首页 > TAG信息列表 > dynamic-library
在我自己的过程中查找符号
设置如下: >有一个应用程序A加载liba.so(在编译时链接)> liba.so导出符号expA>我既不控制A也不控制liba.so>应用程序A可以通过dlopen(认为插件体系结构)将我指定的库libmine.so加载到同一进程中>我需要使用libmine.so中的expA,但不知道如何在不显式链接liba.so的情况下找到它,这是我Linux C/C++在动态库中分配/取消分配内存
我必须将我的应用程序分成几个逻辑模块. mainapp: > module1.so > module2.so> module3.so>等 每个模块是一个* .so库,它将在运行时加载. 每个模块共享相同的接口,并将返回一些数据数组.例如: int * ptr = module1-> getIntData(); 可以在mainapp端释放/删除此内存吗? int *ptr = modlinux-尝试运行Qt应用时LD_LIBRARY_PATH失败
我想在Linux上运行基于Qt 5的应用程序usind动态库.总之,脚本会将可执行文件和其他相关文件(包括lib文件夹中的所有.so文件)复制到所需的目标位置,并且调用gksudo的脚本将作为应用程序的调用者. 到现在为止,一切正常,直到我调用可执行脚本:该应用程序无法运行.当我要求使用sudo运行时c-具有相同名称的新二进制文件上的dlopen返回旧句柄
我正在使用dlopen加载动态生成的代码.该程序在代码上调用编译器,并生成一个.so文件,然后由程序加载以扩展自身. 问题是,如果我对生成的代码使用相同的名称,则dlopen将返回旧对象的句柄,而不是新对象的句柄. 代码如下: …generate code into test.cpp system("gcc <args> test.cpp -c – 具有相同名称的库的静态和动态版本是一种常见做法吗?
我下载了一个库(确切地说是NAG c库),并且该库的静态和动态版本具有相同的名称(libnagc_nag).一开始我遇到了麻烦,因为我试图链接到OS X中的静态版本,默认情况下它使用动态库,因此我更改了文件的名称以区分它们(libnagc_nag_s.a和libnagc_nag_d.dylib for OS X和linux中的libnagc_na如何获取指向动态库(Linux ELF)特定部分的指针?
从second answer for this question中可以看出,使用节的名称从内部获取指向程序特定部分的指针非常简单.使用libelf,只需打开程序自己的文件,遍历其中的所有部分(由Elf64_Shdr结构表示),当部分名称与您想要的部分匹配时停止,并使用存储在Elf64_Shdr结构的sh_addr元素中的指针.在这c – 如何确定哪个动态库负责创建指针?
假设您有一个使用dlopen()加载多个共享对象/动态库的程序.给定指向全局对象的指针(例如静态成员变量),是否可以确定指针是在哪个库的边界中分配的?解决方法:您可以使用文件/ proc / self / maps解析流程图,并查看指针地址的界限,全局变量将位于.data或.bss段中. 示例库lib.c: static