все. Я использую aarch64-linux-android-g ++ для компиляции двоичного файла.
Код такой:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int diag_wakelock_destroy();
int main(int argc, char **argv){
printf("hello world");
char mystring[] = "hi";
int result = diag_wakelock_destroy();
printf("finish! return: %d\n", result);
return 0;
}
Функция diag_wakelock_destroy определена в libdiag.so, как мы можем видеть из IDA или просто использовать "nm -D libdiag.so". Но когда я скомпилировал его с помощью этой команды
aarch64-linux-android-g++ --sysroot=$SYSROOT -g -fpie -pie -o exe_fine hi_diag.cpp libdiag.so liblog.so libcutils.so libc++.so libm.so libc.so ld-android.so -ldl -L.
Я получил эту ошибку.
/tmp/ccUb4ImK.o: In function `main':
/home/sam/Documents/test/lib-diag/hi_diag.cpp:13: undefined reference to
`diag_wakelock_destroy()'
collect2: error: ld returned 1 exit status
Так что он не может найти эту экспортированную функцию! Это странно Может кто-нибудь мне помочь ? Спасибо!