加载共享库的多个实例,这些实例在内部具有公共变量和dlopen调用

时间:2019-02-08 05:51:01

标签: posix openmp pascal gfortran freepascal

我有一个$client->request('GET', '/get', [ 'headers' => [ 'User-Agent' => $_SERVER['HTTP_USER_AGENT'], ] ]); 代码,需要在不同的文件夹路径中加载同一共享库( .so )的多个实例。该共享库位于PASCAL中,包含用于加载外部 .so 的公共变量和dlopen调用(使用LoadLibrary函数)。

在我的GFORTRAN代码中,我在GFORTRAN中尝试了RTLD_LAZY=1RTLD_NOW=2。它正在加载 .so ,但是我怀疑变量是共享的(如果我使用dlopen在每个线程中运行每个实例,我会看到我为线程中的变量设置的值1被线程2)覆盖。

或者,我基于questionopenMP尝试了dlmopenLM_ID_BASE,但是变量共享也遇到了同样的问题。当我第一次尝试LM_ID_BASE并尝试第二次LM_ID_NEWLM时,我得到 symbol lookup error: /home/selva/libclusol.so: undefined symbol: memset, version GLIBC_2.2.5

有什么建议吗?

注意:我的 .so 是使用FPC构建的,它具有许多公共变量,loadlibrary调用(内部使用dlopen)和少量导出的函数我在GFORTRAN

中使用的

0 个答案:

没有答案