0
我找不到工作示例如下:使用共享库的Android设备运行交叉编译的C程序
我创建从下面的代码组成的共享库:
foo.c的: #包括
#include "foo.h"
void foo(void)
{
printf("Hello, I'm a shared library\n");
}
和foo.h中是接口:
#ifndef __FOO_H__
#define __FOO_H__
void foo(void);
#endif
的“foo”的代码驻留在子目录富
使用(为简单起见,我会放下精细的制作选项)编译:
#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
建设IT- 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
那么远都可以,我得到的可执行文件,并将其推到/数据/本地的/ tmp /。现在
,我尝试了所有的下面没有成功(得到的错误:测试:没有这样的文件或目录)
- 亚行推libfoo.so到/ System/lib或/系统/ lib64的
- 复制到/ data/local/tmp /并相应地设置LD_LIBRARY_PATH
任何人都有建议吗?
我最近有一个类似的问题...我_think_我用'ldd'和/或'strace'弄清楚到底是什么,这是试图寻找和地点。也许使用这些可以给你一些线索 – yano
我不明白。你在命令(1)或(2)上得到错误?这些命令中的“测试”在哪里使用? –
yano-我没有在我的工具链中看到ldd(我正在使用arm-none-linux-gnueabi)。 Gustavo-运行./test时出错 – user2063776