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");
...
}
저는 Raspberry PI와 매우 유사한 RockPI 4(Linux)에서 개발 중입니다. 그렇다면 이 "버그"를 수정하는 방법은 무엇입니까? 라이브러리를 설치해야 합니까?