導航:首頁 > 文件教程 > g編譯so文件

g編譯so文件

發布時間:2021-10-25 20:42:18

Ⅰ 怎麼讓gcc編譯出來的so文件不依賴於libgcc

/*main.c*/
#include<stdio.h>
intmain(intargc,char*argv[]){
fprintf(stderr,"argc:%d ",argc);
inti;
for(i=0;i<argc;i++){
fprintf(stderr,"argv[%d]:%s ",i,argv[i]);
}
return0;
}


time gcc -O2 main.c -o main
ldd ./main 返回
linux-vdso.so.1 => (0x00007fff9fbfe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0e88001000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0e883e6000)
size main 查看大小
text data bss dec hex filename
1408 560 16 1984 7c0 main
靜態編譯(加上-static參數):

timegcc-O2-staticmain.c-omain
ldd./main返回「不是動態可執行文件」。
sizemain查看大小
textdatabssdechexfilename
78276275329632799926c34b6main

Ⅱ 請問我有一個.so文件,如何在Linux下編程使用呢

-lxx

xx是你的.so文件名

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

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

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

(2)g編譯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,只生成目標文件。

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

http://www.linuxidc.com/Linux/2012-09/70502.htm

Ⅳ 如何用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.:表示連接的庫在當前的目錄中。

Ⅳ (gcc)C++如何載入.so文件

Ⅵ 怎麼用gcc生成.so文件

Linux下文件的類型是不依賴於其後綴名的,但一般來講:
.o,是目標文件,相當於版windows中的.obj文件
.so 為共享庫權,是shared object,用於動態連接的,和dll差不多
.a為靜態庫,是好多個.o合在一起,用於靜態連接
.la為libtool自動生成的一些共享庫,vi編輯查看,主要記錄了一些配置信息。可以用如下命令查看*.la文件的格式 $file *.la
*.la: ASCII English text
所以可以用vi來查看其內容。

Ⅶ LLINUX GCC 編譯C使用自定義動態鏈接庫.so的問題

1. 可以參考如下關於庫文件的文章:http://numanal.com/?p=129
2. 在編譯文件時最好用-L指明自定義庫的存在回目錄, 利用如下任一語句答(.so文件與.c文件在同一目錄):
gcc test.c -o test2 -L./verify.so
gcc test.c -o test2 -L.
3. 你這里在的問題應該與編譯器的某些兼容性有關, 在實際編寫程序的時候最好按gcc的語法規范走, 避免不必要的錯誤.

Ⅷ 如何用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.:表示連接的庫在當前的目錄中。

Ⅸ 如何用gcc命令生成一個.so文件或者.a文件

你想生成動態的,就是動態的。想生成靜態的就是靜態的。

你看到裡面有一個文件叫Makefile沒有。這個文件裡面的規則決定了生成動態還是靜態的。絕大多數都是動態的。

生成方法:
用shell進入到這個目錄
執行命令
make

即可。

更為詳盡的操作,可以打開README文件,看看裡面的說明。

Ⅹ 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

閱讀全文

與g編譯so文件相關的資料

熱點內容
香港限制電影有哪些 瀏覽:416
如何檢查兩個文件夾內容是否一樣 瀏覽:114
蘋果6屏幕開膠可以修嗎 瀏覽:654
一個法國電影一個女孩 被騙做妓女 瀏覽:942
Joo In-cheol 瀏覽:505
電影院里要我 瀏覽:206
現在還有什麼網站能看 瀏覽:635
網路電視直播翡翠台 瀏覽:365
linuxjava創建文件夾失敗 瀏覽:440
不宜深度解析電影在哪個平台放 瀏覽:284
手機無水印電影網站 瀏覽:86
有沒有網站你懂得 瀏覽:596
launchpad應用程序 瀏覽:158
模具編程和產品編程哪個好做 瀏覽:564
華為新手機安裝升級包 瀏覽:63
手柄控制win10 瀏覽:330
不用下載直接看視頻網站 瀏覽:688
電腦桌面上的文件夾如何發送到qq 瀏覽:27
成賢娥假戲真做 瀏覽:257
歐美生活大片大胸 瀏覽:158

友情鏈接