2016-07-25 72 views
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 /。现在

,我尝试了所有的下面没有成功(得到的错误:测试:没有这样的文件或目录)

  1. 亚行推libfoo.so到/ System/lib或/系统/ lib64的
  2. 复制到/ data/local/tmp /并相应地设置LD_LIBRARY_PATH

任何人都有建议吗?

+0

我最近有一个类似的问题...我_think_我用'ldd'和/或'strace'弄清楚到底是什么,这是试图寻找和地点。也许使用这些可以给你一些线索 – yano

+0

我不明白。你在命令(1)或(2)上得到错误?这些命令中的“测试”在哪里使用? –

+0

yano-我没有在我的工具链中看到ldd(我正在使用arm-none-linux-gnueabi)。 Gustavo-运行./test时出错 – user2063776

回答