每个人。我正在使用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
因此找不到导出的功能!真奇怪谁能帮我 ?谢谢!