错误“未定义引用‘dlopen’”是什么意思?

错误“未定义引用‘dlopen’”是什么意思?

当我想编译我的 c 文件时,我收到以下消息:

undefined reference to 'dlopen'
undefined reference to 'dlsym'

在有关此主题的其他一些帖子中,解决方案是将 . 添加-ldl到链接器选项或命令行gcc test.c -ldl。但这是行不通的。在这种情况下,我只是在目录中获得一个 .o 文件或 a.out,但我无法执行这些文件。当我在命令行中输入 ./a.out 时,segmentation fault会发生错误。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include "PI_GCS2_DLL_PF.h"
int main(){
   void* hPI_Dll = dlopen("test.so", RTLD_NOW);
   int ID = -1;
   PFPI_ConnectRS232ByDevName = (PI_ConnectRS232ByDevName);
   PI_ConnectRS232ByDevName = (PFPI_ConnectRS232ByDevName) dlsym(hPI_Dll, "PI_ConnectRS232ByDevName");

...
}

我正在 RockPI 4(在 Linux 上)上进行开发,它与 Raspberry PI 非常相似。那么如何修复这个“错误”呢?我是否必须安装任何库?

相关内容