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