『壹』 linux生成文件中.so 文件和.out文件的區別
.so是二進制格式的鏈接庫文件,包含鏈接庫源文件(.c)中的各函數實現、調試信息等。
.out一般也是由gcc編譯生成的二進制格式文件,但有可能是執行程序也可能是鏈接庫文件,因為在linux中擴展名除了一些特殊的約定,一般情況下是無意義的。
執行文件也分動態鏈接還是靜態鏈接。大多數情況都是動態鏈接,裡面存放源文件(.c)中編譯後的二進制代碼及所調用函數庫的入口參數,靜態鏈接則是all-in-one,就是將所用到的非標准庫都打包到執行文件中,所以體積都較大。
『貳』 Linux下如何將多個.c文件生成.so文件
根據相應的頭文件、和鏈接使用的庫文件,編譯鏈接後,即是可以使用該.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
『肆』 linux怎麼編譯得到so文件
不進行make install安裝的話,就在你openssl的源碼目錄里,當然你config的時候需要指明shared,否則只有.a的,沒有.so的。如果config的時候,指定了prefix,那麼就到你指定的目錄去找,下面應該有個lib目錄。如果你的linux自帶openssl的話,系統的lib目錄下就有。libcrypto和libssl
『伍』 對linux 驅動封裝成so文件
so文件就是通常說的動態鏈接庫,就跟windows下的dll文件差不多。
ko是內核模塊文件,驅動之類的啥的。
不過在linux系統下文件的後綴多數情況下只是個標識,有可能代表不了文件的真實屬性的。
至於怎麼編寫,就跟用VS編譯dll或者lib文件差不多,把你的代碼編譯完成以後命名為相應的後綴就好了。
我了解的一般都是C程序,java屬於腳本語言,程序多數情況下是被解釋執行的,所以一般不需要編譯成庫。至於如何編譯成庫文件,如果你在windows下做過開發的話應該不用我解釋太多。實在不知道的話可以再問我哈~~
希望以上回答能對你有所幫助。
『陸』 請問我有一個.so文件,如何在Linux下編程使用呢
-lxx
xx是你的.so文件名
其實使用方法和你使用數學庫函數是一樣的,源代碼中添加
#include <math.h>,編譯的時候,加上-lm參數。
註:linux下的.so文件為共享庫,相當於windows下的dll文件。
linux下編寫調用so文件實例
.so是Linux(Unix)下的動態鏈接庫. 和.dll類似.
比如:
文件有: a.c, b.c, c.c
gcc -c a.c
gcc -c b.c
gcc -c c.c
gcc -shared libXXX.so a.o b.o c.o
要使用的話也很簡單. 比如編譯d.c, 使用到libXXX.so中的函數, libXXX.so地址是MYPATH
gcc d.c -o d -LMYPATH -lXXX
注意不是-llibXXX
test.c文件和一個test.h,這兩個文件要生成libsotest.so文件。然後我還有一個testso.c文件,在這個文件裡面調用libsotest.so中的函數。
編寫的過程中,首先是編譯so文件,我沒有編寫makefile文件,而是參考的2裡面說的直接寫的gcc命令。
因為so文件裡面沒有main函數,所以是不可執行的,所以編譯的時候要加上-c,只生成目標文件。
『柒』 linux so是什麼 文件
.so文件代表Linux的共享函數庫文件,程序運行時可能會使用到裡面的函數代碼。當一個程序需要.so共享函數庫文件時,系統自動會把它載入到內存中使用。相當於Windows系統裡面的dll動態鏈接庫文件。
『捌』 怎樣把.c文件編譯成.so文件
比如有一個test.c文件,我想打包成動態庫test.so,
直接gcc
test.c
-o
test.o
-fpic
gcc
-o
test.so
test.o
-shared
使用的時候發布.so和頭文件即可。
鏈接的時候要記得丟在默認目錄或者將其所在目錄聲明到環境變數,不然有時候會提示找不到這個庫文件。
『玖』 Linux c++開發.so文件的使用
假設在linux上用gcc編譯程序,需要用下列編譯選項生成.so文件:
gcc -fPIC -shared
.so 文件安裝一般是在/usr/lib或者/usr/local/lib下,安裝後不需要絕對路徑即可使用。當然你也可以安裝到工程文件夾下面,不過很少有這么做的。使用時只需要dlopen()函數打開這個庫,用dlsym()函數將動態庫的函數體載入進來;同樣已載入的動態函數庫可以用dlclose()關閉。
詳細使用方法網路搜dlopen 即可。
『拾』 linux下ndk-bulid編譯形成了so文件,在windows環境下的eclipse怎麼使用
可以直接在android工程下使用,因為android就是linux內核。
android的NDK開發需要在linux下進行: 因為需要把C/C++編寫的代碼生成能在arm上運行的.so文件,這就需要用到交叉編譯環境,而交叉編譯需要在linux系統下才能完成。
2.安裝android-ndk開發包,這個開發包可以在google android : 通過這個開發包的工具才能將android jni 的C/C++的代碼編譯成庫
3.android應用程序開發環境: 包括eclipse、java、 android sdk、 adt等。
NDK編譯步驟:
選擇 ndk 自帶的例子 hello-jni ,位於E:android-ndk-r5sampleshello-jni( 根據具體的安裝位置而定 ) 。
2.運行 cygwin ,輸入命令 cd /cygdrive/e/android-ndk-r5/samples/hello-jni ,進入到 E:android-ndk-r5sampleshello-jni 目錄。
3.輸入 $NDK/ndk-build ,執行成功後,它會自動生成一個 libs 目錄,把編譯生成的 .so 文件放在裡面。 ($NDK是調用我們之前配置好的環境變數, ndk-build 是調用 ndk 的編譯程序 )
4.此時去 hello-jni 的 libs 目錄下看有沒有生成的 .so 文件,如果有,ndk 就運行正常啦。