導航:首頁 > 源碼編譯 > c將so庫編譯在一起

c將so庫編譯在一起

發布時間:2023-11-30 07:27:25

① 如何用gcc編譯生成動態鏈接庫*.so文件

生成動態鏈接庫的命令行為:
gcc -fPIC -shared -o libstr.so
當將main.c和動態鏈接庫進行連接生成可執行文件 的命令如下:
gcc main.c -L./ -lstr -o main或者gcc -o main main.c -L./ -lstr
測試是否動態鏈接,如果列出libstr.so, 那麼應該是連接正常了ldd main註:1)-L.:表示連接的庫在當前的目錄中。

② C/C++源文件直接交叉編譯生成.so文件供安卓應用程序調用,可以嗎

Jni調用就行了,是要按規則寫介面api,如果介面很多,也沒法,那是你的業務問題,要重新設計業務邏輯。我們之前用的c++單獨交叉編譯一個進程,和安卓界面用tcp通信,如果介面多也以為著協議多,一樣的。

③ 請問我有一個.so文件,如何在linux編程使用呢

-lxx

xx是你的.so文件名

其實使用方法和你使用數學庫函數是一樣的,源代碼中添加

#include <math.h>,編譯的時候,加上-lm參數。

註:linux下的.so文件為共享庫,相當於windows下的dll文件。

(3)c將so庫編譯在一起擴展閱讀:

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下c語言編譯so問題

不需要在自己的.so中調用別人的.so,只需要編譯自己的,編譯.so時,系統不會檢查未定義的函數。
直接在編譯自己的應用程序時鏈接這兩個.so就可以了!
gcc
-o
exec_file
mysrc.c
-L./
-lXXX
-L/usr/lib
-lmysqlclient

⑤ linux下如何用c++編譯so文件,c語言又怎樣調用這個so文件

C++編譯so文件與C編譯so一樣都是加參數 -shared

C語言調用C++的so
首先C要調用的C++的函數必須是extern "C"聲明的。
其次編譯C程序時需要增加鏈接libstdc++.so(可能名字不打對自己查查)

閱讀全文

與c將so庫編譯在一起相關的資料

熱點內容
電腦用文件夾玩大型游戲 瀏覽:252
安卓耳塞失靈怎麼辦 瀏覽:763
華三交換機保存命令 瀏覽:603
命令方塊怎麼調鍵盤 瀏覽:841
不把密碼存在伺服器上怎麼辦 瀏覽:398
怎麼讓指令方塊的命令消失 瀏覽:543
用單片機做plc 瀏覽:404
雲伺服器進入子目錄命令 瀏覽:795
伺服器機櫃如何配電 瀏覽:578
怎麼刪除iphone資源庫里的app 瀏覽:940
pdf魚 瀏覽:648
單片機pcf8591什麼作用 瀏覽:805
sql命令學院 瀏覽:283
加密軟體在電腦那個盤 瀏覽:988
android獲取外部存儲 瀏覽:573
怎麼查自己家的伺服器地址 瀏覽:858
編程c語言工作好不好 瀏覽:569
單片機焊接地怎麼連接 瀏覽:694
游戲源碼怎麼抓 瀏覽:216
程序員幫大家引走怪物 瀏覽:16