cost 74 ms
trans object 接口上的 STL 类,由 dlopen 动态加载 - trans object of STL-class on interface which dynamicly load by dlopen

主.cpp 测试3.cpp 如果 main.cpp 使用 gcc-11 构建,而 test3.cpp 使用 gcc-4.8,程序将崩溃。 如果 main.cpp 在链接列表中使用 test3.so 构建,程序将正常运行。 在我的要求中,我想动态加载一个插件(可能是用其他版本的 gcc 构建的)和 t ...

我可以在 Compiler Explorer 中编译和 dlopen 动态库吗? - Can I compile and dlopen a dynamic library in Compiler Explorer?

只是为了学习的目的,我做了一个主程序的小例子,它通过dlopen暂时加载一个共享库(然后通过dlsym从它加载一个符号),如果前者不可用,则使用默认的。 在我的机器上,为了使非默认库可用于主程序,我需要通过g++ -fPIC -shared MyLib.cpp -o libMyLib.so编译前者 ...

cmake:如何在只有 target_link_directories(没有 target_link_libraries)的共享库中设置 rpath? - cmake: how to set rpath in a shared library with only target_link_directories (without target_link_libraries)?

我的项目的目标如下: 从我的主可执行文件中,我想加载一个库( libfoo.so )来加载第二个库( libbar.so )。 我不想在传递给dlopen的任何filename arguments 中指定相对或绝对路径:即我希望我的代码读取“ dlopen("libfoo.so", RTLD_LA ...

如何加载多个作为物理副本的共享库 - How to load multiple shared libraries that are physical copies

背景 我们有一个用于与设备通信的 c++ 库。 1 个库只能与 1 个设备通信。 该库在启动时还会创建一个日志文件。 我们现在有一个需要同时与 30 台设备通信的新项目。 问题 这个新项目在c++20中,将在linux上运行,我们希望能够将 30 个这些库加载到程序中,所以我制作了这个 .so ...

什么会使 dlclose() 失败? - What can make dlclose() fail?

在 POSIX(或 GNU)系统上,什么会导致dlclose()函数失败? 我知道它在重复关闭时失败; 并且它在空指针参数上行为不端(在我的系统上出现分段违规)。 但在其他情况下它会失败吗? 编辑:我尝试查看源代码并且有点难过 - 无法真正弄清楚在哪里看( dlclose.c显然不是这个地方)。 ...

extern "C" 用于加载 dlsym 的函数 - extern "C" for functions loaded with dlsym

在 C++ 项目中,我正在使用dlopen和dlsym加载.so 。 .so是从 C 源代码编译而来的,所有函数都有 C 链接。 我唯一无法弄清楚的部分是如何将结果指针转换为extern "C" function,以便实际调用站点使用适当的链接。 我知道其中一个主要区别是名称修改,我不必担心这一点 ...

2022-04-08 17:00:01   1   201    c++ / dlopen  
`dlopen` 可以用来加载和映射 static ELF 可执行文件(不是库)吗? - Can `dlopen` be used to load and mmap a static ELF executable (not library)?

如果文件anexe是static编译的,没有符号,没有出口,ELF, dlopen("anexe", RTLD_LAZY)可以用来将map变成memory吗? 我的目标不是能够引用符号——没有符号。 相反,我的目标是能够在给定地址(固定地址,而不是 PIC)的情况下调用其函数,并在给定地址的情况下 ...

为什么 RTLD_DEEPBIND 和 RTLD_LOCAL 不能防止 static class 成员符号的冲突 - why are RTLD_DEEPBIND and RTLD_LOCAL not preventing collision of static class member symbol

我正在尝试为应用程序编写一个简单的插件系统,并希望防止插件踩到其他符号,但是当涉及到 static class 成员时,RTLD_DEEPBIND 和 RTLD_LOCAL 似乎还不够在不同的插件中命名。 我写了一个精简的例子来说明我的意思。 我像这样编译并运行它: 第二个插件的 output 文件 ...

正确动态加载 PIE - Correctly dynamic loading PIEs

许多像这样的讨论和这样的例子已经警告我们尝试dlopen一个 PIE 永远不会是正确的。 原因多种多样:复制重定位、TLS 等。 但是,如果我们放开限制,这些问题是可以避免的。 这个问题表明我们使用fPIC编译可以消除复制重定位,并且 TLS 似乎工作正常。 这就提出了一个问题,即我们离正确动态加 ...

Linux 和共享库,链接 vs dlopen - 符号可见性 - Linux and shared libraries, linking vs dlopen - symbol visibility

我在 Linux 上工作。 当我的应用程序链接到共享库(不隐藏符号)时,该库中的所有符号都是可见的。 共享库也可以在运行时使用dlopen加载。 是否可以使用dlopen模式参数来控制符号的可见性,或者我总是必须使用dlsym来获取所需的符号? ...

手动加载 libcrypto (dlmopen, dlsym) segfaults; 动态链接作品 - Manually loading libcrypto (dlmopen, dlsym) segfaults; dynamically linked works

我正在尝试使用来自libcrypto.so.3的 function EVP_PKEY_new_raw_private_key 。 当我与-l:libcrypot.so.3链接时,它可以工作。 当我尝试使用dlmopen + dlsym打开同一个文件时,它会在调用 function 时成为SEGV 。 ...

同一共享对象调用的多次加载 (dlopen) 和卸载 (dlclose) 导致分段错误 - Multiple load (dlopen) and unload (dlclose) of the same shared object calls resulting in segmentation fault

在我的代码中,我有一个 for 循环,首先我调用 dlopen 加载共享对象,然后调用加载库的函数,然后调用 dlclose 卸载它。 循环的第一次迭代按预期工作,但在第二次迭代期间(当 i=1 时)dlopen 调用导致分段错误(核心转储)。 生成 mylib.so 的脚本: 在这里,go ...

加载共享对象的两个实例的安全方法 - Safe way to load two instances of a shared object

我正在实现一个支持实时软件升级(无需进程重启)的 Linux 应用程序。 为了支持这个功能,我把我的应用程序分成了两部分 模块代理 - 与外部进程交互的应用程序的前端 模块实现 - 动态共享模块,可以在程序更新期间使用新实现卸载和重新加载。 高级方法是将应用程序置于静止状态,将传入消息保存 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM