aarch64-linux-android-g ++ не может найти экспортированную функцию - PullRequest
0 голосов
/ 04 июля 2018

все. Я использую 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

Так что он не может найти эту экспортированную функцию! Это странно Может кто-нибудь мне помочь ? Спасибо!

...