導航:首頁 > 文件教程 > 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文件相關的資料

熱點內容
編程怎麼讓一根針轉動 瀏覽:556
java代碼異常如何定位 瀏覽:959
軟體工程需要什麼編程 瀏覽:804
手機測評網站哪個權威 瀏覽:81
搜狐網站源碼下載 瀏覽:302
如何舉報惡性app 瀏覽:835
一個虛擬主機怎麼建多少網站 瀏覽:825
和家親app為什麼老是掉線 瀏覽:990
兒童編程思維課有什麼用 瀏覽:600
魔百和網路機頂盒怎麼連接電視 瀏覽:611
國產顯示器icc配置文件 瀏覽:52
java編程常見的語法糖有哪些 瀏覽:41
jspmysql選課源碼 瀏覽:877
ipadmini2下載app等待 瀏覽:399
creo工程圖配置文件 瀏覽:699
編程和鋼琴哪個貴 瀏覽:841
移動進銷存app哪個好 瀏覽:600
編程製作游戲什麼原理 瀏覽:97
linux如何查看是否有共享文件夾 瀏覽:264
u盤拷貝文件以後為空 瀏覽:917

友情鏈接