動態庫共享庫
第一步:通過gcc -fpic -c 編譯生成.o檔案
gcc -fpic -c a.c (編譯生成.o檔案 -fpic與位置無關)
gcc -fpic -c b.c
生成a.o,b.o編譯檔案。
第二步:通過上面已經生成的a.o,b.o檔案生成.so檔案
方法1: gcc -shared -wl -o liba.so a.o
方法2: gcc -shared -wl,-soname,libab.so.1 -o libab.so.1.10 a.o b.o
第三步:通過依賴庫編譯生成可執行檔案error while loading shared libraries: libcalc.so.1: cannot open shared object file: no such file or directory
ldd察看依賴庫:
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb760c000)
/lib/ld-linux.so.2 (0xb77c9000)
注意點libcalc.so.1 => not found動態庫沒有找到
解決方法:
gcc -c -fpic *.c
ar rcs libxx.a *.o
nm :察看檔案包含內容
linux 下生成動態庫 so並引用
動態庫的引入及減少了主 檔案的大小,同時生成的動態庫又是動態載入的,只有執行的時候才去載入,linux 下的 動態庫 so 就像windows下的 dll一樣。有關動態庫的概念自行上網搜。一下是建立及引用動態庫 test so.h ifndef test so h define test so h ...
Linux上FFmpeg生成so庫
我用的是ubuntu做開發的,之前使用過centos7去編譯的 感覺太麻煩出錯了,從朋友那得知ubuntu和debian 是適用於開發的 1.cd home 切換到home 目錄 2.mkdir ndk在home目錄下新建資料夾 ndk 3.把linux版的ndk上傳到ubuntu伺服器上 4.cd...
so動態鏈結庫生成 呼叫
linux下檔案的型別是不依賴於其字尾名的,但一般來講 o,是目標檔案,相當於windows中的.obj檔案 so 為共享庫,是shared object,用於動態連線的,和dll差不多 a為靜態庫,是好多個.o合在一起,用於靜態連線 1 動態庫的編譯 下面通過乙個例子來介紹如何生成乙個動態庫。這裡...