c++ - 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# - 3-Tier - 模型重用?
- stripe-payments - Stripe Checkout 服务器端加载客户卡
- javascript - 使用 NodeJS 通过 LDAP 身份验证获取用户个人资料图片
- java - MismatchedInputException - Jackson 反序列化
- pipeline - 在 pdal 管道文件中读入和合并多个 .las
- php - 我在使用 xamp 的本地主机中遇到 codeigniter 错误
- python - 查找图像每个部分的平均颜色
- c# - 列表上的动态查询选择包含列表
- ios - 如何仅重新加载 tableView 部分标题?
- python - 为什么 type(((),)[0]) 是元组而不是 int?