2016-07-25 73 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

回答