編譯生成so
❶ 怎樣把.c文件編譯成.so文件
.so是linux用的
所以 要生成so 需要用gcc
和生成可執行文件類似,只是增加一些編譯選項
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件
TARGET為so文件。
❷ linux中把.c的文件編譯成.so
首先
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
❸ 如何把java工程 編譯成.SO文件
1,寫一個java文件,聲明一個native 方法,例如public native void test(); 2,把它編譯成class文件 3,使用javah 這個class來生成cpp的頭文件 4,實現頭文件裡面那些函數 4,用ndk編譯生成動態庫 其中1,想生成幾個就寫幾個native方法。
❹ 如何在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
表示生成成功。
❺ 怎樣把.c文件編譯成.so文件
比如有一個test.c文件,我想打包成動態庫test.so,
直接gcc
test.c
-o
test.o
-fpic
gcc
-o
test.so
test.o
-shared
使用的時候發布.so和頭文件即可。
鏈接的時候要記得丟在默認目錄或者將其所在目錄聲明到環境變數,不然有時候會提示找不到這個庫文件。
❻ 多個.c文件能編譯成單個.so文件嗎
可以的
一般是把多個.c文件 先分別編譯成.o文件
然後再把.o文件打包成.so
也可以直接編譯打包,一步完成。
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件
TARGET為so文件。
比如
gcc a.c b.c c.c d.c -fPIC -shared -o libabcd.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)開始
❽ ndk編譯生成so
本文講述使用Android 的ndk-build來編譯生成so庫,在命令行中編譯。編譯後的so庫可以調用。
環境問題略過,請自行網路或谷歌安裝ndk。
新建文件夾/cn/scnu
並在文件夾中創建java 文件:
該命令會編譯java文件並在build目錄下生成,然後我們打開build目錄
然後我們使用javah命令:
然後會生成一個.h頭文件,我們打開這個頭文件看看:
可以看到這裡面只有一個函數,這個函數返回一個整形,和前面的java頭文件對應。
接下來我們另外創建一個Test文件夾,在Test文件夾下創建jni目錄,然後將剛才生成的頭文件拷貝進來。
然後我們創建JNITest.c文件,文件內容如圖:
這個文件的主要內容就是調用頭文件並實現頭文件中的方法,我們返回了1024。
LOCAL_MODULE 就是我們要生成的so,LOCAL_SRC_FILES就是編譯的文件
這里就表示我們要生成的so庫的CPU架構。
使用命令行進入到Test目錄下,即jni的根目錄處,然後打命令:
結果如圖,然後我們就可以在libs目錄下發現生成的so庫了。