当我想编译我的 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 非常相似。那么如何修复这个“错误”呢?我是否必须安装任何库?