gpt4 book ai didi

android - 运行针对 Android 设备使用共享库的交叉编译 C 应用程序

转载 作者:行者123 更新时间:2023-11-30 16:58:45 27 4
gpt4 key购买 nike

我找不到以下工作示例:

我创建了由以下代码组成的共享库:

foo.c: #包括

#include "foo.h"

void foo(void)
{
printf("Hello, I'm a shared library\n");
}

foo.h 是接口(interface):

#ifndef __FOO_H__
#define __FOO_H__

void foo(void);

#endif

“foo”代码驻留在子目录foo下

编译使用(为了简单起见,我将放弃详细的 make 选项):

#CROSS_COMPILE is:
#/usr/local/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-
CC := $(CROSS_COMPILE)gcc
$(CC) -fPIC -c foo.c -o foo.o
$(CC) -shared -o libfoo.so foo.o

构建时 - libfoo.so 创建成功。

main.c 文件:

#include <stdio.h>

#include "foo.h"

int main(void)
{
printf("Hello World\n");
foo();
return 0;
}

并使用以下方式构建应用程序:

$(CC) -c main.c -o main.o
$(CC) main.o -Lfoo -lfoo -o test

到目前为止,一切顺利,我得到了可执行文件并将其推送到/data/local/tmp/。

现在,我尝试了以下所有操作,但没有成功(收到错误:测试:没有这样的文件或目录)

  1. adb 将 libfoo.so 推送到/system/lib 或/system/lib64
  2. 复制到/data/local/tmp/并相应设置 LD_LIBRARY_PATH

有人有建议吗?

最佳答案

经过一番挖掘后,我发现更好的方法是使用 NDK 而不是标准 Makefile 来实现此目的。

可以在 http://web.guohuiwang.com/technical-notes/androidndk1 找到帮助我实现我想要的目标的综合教程。 .

祝你好运

关于android - 运行针对 Android 设备使用共享库的交叉编译 C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38571729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com