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)で開発中です。それでは、この「バグ」を修正する方法は?ライブラリをインストールする必要がありますか?