首页 > 解决方案 > aarch64-linux-android-g++ 找不到导出的函数

问题描述

每个人。我正在使用 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

所以它找不到那个导出的函数!这很奇怪。谁能帮我 ?谢谢!

标签: c++android-ndkg++cross-compiling

解决方案


推荐阅读