要測試Linux中dlsym的正確性,可以編寫一個簡單的C程序,使用dlsym函數動態加載一個動態鏈接庫,并嘗試獲取動態鏈接庫中的函數或變量。然后編譯這個程序并運行它,如果成功獲取到所需的函數或變量,就說明dlsym函數正常工作。
以下是一個簡單的示例程序:
#include <stdio.h>
#include <dlfcn.h>
int main() {
void *handle;
int (*add)(int, int);
handle = dlopen("libm.so", RTLD_LAZY);
if (!handle) {
fprintf(stderr, "Error: %s\n", dlerror());
return 1;
}
add = dlsym(handle, "add");
if (!add) {
fprintf(stderr, "Error: %s\n", dlerror());
return 1;
}
int result = add(2, 3);
printf("Result: %d\n", result);
dlclose(handle);
return 0;
}
在這個示例程序中,我們嘗試動態加載libm.so庫,并獲取其中的add函數。如果成功獲取到函數并調用成功,程序將輸出計算結果。如果獲取函數或調用失敗,程序將輸出錯誤信息。
編譯并運行這個程序,觀察輸出結果,如果一切正常,說明dlsym函數正常工作。