如何編譯so文件
1,寫一個java文件,聲明一個native 方法,例如public native void test(); 2,把它編譯成class文件 3,使用javah 這個class來生成cpp的頭文件 4,實現頭文件裡面那些函數 4,用ndk編譯生成動態庫 其中1,想生成幾個就寫幾個native方法。
⑵ linux 怎麼編譯.so文件
.so是linux用的 所以 要生成so 需要用gcc 和生成可執行文件類似,只是增加一些編譯選項 命令如下 gcc SOURCE_FILES -fPIC -shared -o TARGET SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件 TARGET為so文件。
⑶ 怎樣把.c文件編譯成.so文件
比如有一個test.c文件,我想打包成動態庫test.so,
直接gcc
test.c
-o
test.o
-fpic
gcc
-o
test.so
test.o
-shared
使用的時候發布.so和頭文件即可。
鏈接的時候要記得丟在默認目錄或者將其所在目錄聲明到環境變數,不然有時候會提示找不到這個庫文件。
⑷ linux中把.c的文件編譯成.so
就跟用VS編譯dll或者lib文件差不多,把代碼編譯完成以後,命名為相應的後綴就好了。
例如:
gcc -c -fPIC libst.c
生成 libst.o
然後
gcc -shared -fPIC -o libst.so libst.o
生成 libst.so 動態鏈接庫
把libst.so拷貝到系統默認庫目錄下,比如 /lib, /usr/lib 下
假定有 test.c 要引用這個庫
gcc -lst -o test test.c
然後就可以了
假如不能把libst.so拷貝到默認庫目錄下,比方說放在了
/home/aaa/lib 下
那麼就用這樣的語句來編譯test.c
gcc -L/home/aaa/lib -lst -Wl,-rpath=/home/aaa/lib -o test test.c
⑸ Android-ffmpeg編譯so文件
Android中如果需要用到ffmpeg做視頻處理,那麼最好的方法就是從頭到尾親自從編譯到集成。踏入ffmpeg的第一步自然就是通過編譯得到Android中可以用的so文件
請大家按我提供的版本環境進行編譯,不然會有很多坑要爬哦。本人就是一路爬坑,最後才編譯成功0.0
腳本文件大家可以自行去研究,可以根據需要編譯自己所需的東西
接下來等執行完畢後,就可以在ffmpeg根目錄下發現一個android目錄
裡面有個 arm 目錄進去有一個 include 和 lib
⑹ 怎樣把.c文件編譯成.so文件
.so是linux用的
所以 要生成so 需要用gcc
和生成可執行文件類似,只是增加一些編譯選項
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件
TARGET為so文件。
⑺ 怎麼編譯生成指定模塊的so庫文件
android NDK編譯多個so文件
android編譯系統的makefile文件Android.mk寫法如下
(1)Android.mk文件首先需要指定LOCAL_PATH變數,用於查找源文件。由於一般情況下
Android.mk和需要編譯的源文件在同一目錄下,所以定義成如下形式:
LOCAL_PATH:=$(call my-dir)
上面的語句的意思是將LOCAL_PATH變數定義成本文件所在目錄路徑。
(2)Android.mk中可以定義多個編譯模塊,每個編譯模塊都是以include $(CLEAR_VARS)開始
⑻ 如何在Eclipse中如何用cygwin把C文件編譯成so文件
用cygwin把C文件編譯成so文件:
1:首先,要准備好一個jni文件夾,裡麵包含三個文件:

makefile文件:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE:=test-jni
LOCAL_SRC_FILES := test-jni.c
include $(BUILD_SHARED_LIBRARY)
如果有多個文件,可能有所不同吧,尚未嘗試。
頭文件:最好使用javah命令來生成,可見我的上一篇文章;
源文件:根據頭文件,完善源碼。
2:將jni文件夾拷貝到Android項目目錄下
3:運行cygwin,使用CD命令,切換目錄到Android項目目錄
4:輸入命令$NDK/ndk-build,屏幕顯示如下:
$ $NDK/ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : test-jni <= test-jni.c
SharedLibrary : libtest-jni.so
Install : libtest-jni.so => libs/armeabi/libtest-jni.so
表示生成成功。
