标签: libdl

在 Julia 编程语言中执行 C 代码时出现异常访问冲突错误

我正在遵循 JuliaAcademy ( https://github.com/JuliaAcademy ) 的一些示例代码。

我正在尝试从 Julia 中运行 C 代码。我使用的是 Windows 10 64 位,我的计算机上安装了 gcc,并安装了 Atom IDE 来运行 Julia。

这是我正在运行的代码片段:

using Libdl
C_code = """
#include <stddef.h>
double c_sum(size_t n, double *X) {
    double s = 0.0;
    for (size_t i = 0; i < n; ++i) {
    s += X[i];
    }
return s;
}
"""

const Clib = tempname()   # make a temporary file


# compile to a shared library by piping C_code to gcc
# (works only if …
Run Code Online (Sandbox Code Playgroud)

julia libdl

6
推荐指数
0
解决办法
302
查看次数

如何在cmake中链接libdl库

我的应用程序依赖于 OpenSSL。因此,我下载并构建了 OpenSSL,并将我需要的静态库(libssl.alibcrypto.a)放置在我可以控制的已知目录中。在我的应用程序的 cmake 文件中,我使用find_library命令来确定每个库的完整路径,将路径存储在列表变量中,并将该列表变量添加到命令中target_link_libraries。只要 OpenSSL 符号对我的应用程序可见,就可以了。

OpenSSL 进一步依赖于“动态链接加载器”库(又名libdl)。我知道 OpenSSL 构建使用了-ldl编译器选项,因为我可以在构建输出中看到它。

在我的 Linux 开发机器上,该libdl库似乎已经安装了。证据是:

  1. libdl.solibdl.so.2(它们是实际libdl-2-17.so库文件的符号链接)存在于似乎是此类内容的标准目录中: /usr/lib64
  2. 当我运行时man dlclose,我得到了有关“动态链接加载器”库的预期手册页。

但是,当我构建应用程序时,我收到如下链接器错误。libdl肯定找不到该库。

/usr/bin/ld: ../install/lib/libcrypto.a(dso_dlfcn.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/lib64/libdl.so.2: error adding symbols: DSO missing from command line
Run Code Online (Sandbox Code Playgroud)

问题1

cmake应该能够libdl.so自己找到吗?

问题2

在我的应用程序的 cmake 文件中,我可以使用find_library命令来确定库的完整路径libdl,并将该路径添加到target_link_libraries命令中。请注意,我不必给它路径提示。这可行,但感觉像是一种解决方法。

我是否有必要明确搜索 的完整路径libdl.so

问题3

cmake …

c++ linux linker cmake libdl

5
推荐指数
0
解决办法
6932
查看次数

标签 统计

libdl ×2

c++ ×1

cmake ×1

julia ×1

linker ×1

linux ×1