當前位置:首頁 » 編程軟體 » 如何將c編譯成so文件

如何將c編譯成so文件

發布時間: 2022-06-06 21:06:04

㈠ 用cc怎樣把.c文件編譯成.so文件

比如有一個test.c文件,我想打包成動態庫test.so,
直接gcc test.c -o test.o -fPIC
gcc -o test.so test.o -shared
使用的時候發布.so和頭文件即可。
鏈接的時候要記得丟在默認目錄或者將其所在目錄聲明到環境變數,不然有時候會提示找不到這個庫文件。

㈡ 怎樣把.c文件編譯成.so文件

比如有一個test.c文件,我想打包成動態庫test.so,
直接gcc
test.c
-o
test.o
-fpic
gcc
-o
test.so
test.o
-shared
使用的時候發布.so和頭文件即可。
鏈接的時候要記得丟在默認目錄或者將其所在目錄聲明到環境變數,不然有時候會提示找不到這個庫文件。

㈢ 多個.c文件能編譯成單個.so文件嗎

可以的
一般是把多個.c文件 先分別編譯成.o文件
然後再把.o文件打包成.so
也可以直接編譯打包,一步完成。
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件
TARGET為so文件。
比如
gcc a.c b.c c.c d.c -fPIC -shared -o libabcd.so

linuxc語言編譯so問題

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

㈤ linux中把.c的文件編譯成.so

首先
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下如何將多個.c文件生成.so文件

根據相應的頭文件、和鏈接使用的庫文件,編譯鏈接後,即是可以使用該.so文件了
~~~~~~~

㈦ 在MACOX上的ANDROIDSTUDIO如何編譯OPENSSL原生的C庫成動態的.SO庫

目前暫不支持開發工具編譯C、c++代碼生成so文件,應該後續版本會有的。
.so 為共享庫,是shared object,用於動態連接的,和dll差不多,可以這樣調用so文件:
調用 System.out.println(System.getProperty("java.library.path"));
得到/usr/java/jdk1.5.0_13/jre/lib/i386,將SO文件放在該目錄下
運行java程序,輸出了由C語言函數計算出的結果

㈧ 有個 c 文件,如何才能將其編譯成動態鏈接庫

有二個文件,一個 test.h, 一個 test.c

//test.h
#pragmaonce

#ifdef__cplusplus
extern"C"{
#endif

intadd(inta,intb);

#ifdef__cplusplus
}
#endif
//test.c
#include"test.h"

intadd(inta,intb)
{
returna+b;
}

編譯,生成動態鏈接庫:

#gcc-g3-Wall-fPIC-shared-olibtest.sotest.c
#ls-l
-rwxr-xr-x1rootroot14618Jul2413:44libtest.so
-rw-r--r--1rootroot63Jul2413:43test.c
-rw-r--r--1rootroot106Jul2413:43test.h

#nmlibtest.so
00000000002006e8a_DYNAMIC
0000000000200890a_GLOBAL_OFFSET_TABLE_
w_ITM_deregisterTMCloneTable
w_ITM_registerTMCloneTable
w_Jv_RegisterClasses
00000000002006c8d__CTOR_END__
00000000002006c0d__CTOR_LIST__
00000000002006d8d__DTOR_END__
00000000002006d0d__DTOR_LIST__
00000000000006b8r__FRAME_END__
00000000002006e0d__JCR_END__
00000000002006e0d__JCR_LIST__
00000000002008b8d__TMC_END__
00000000002008b8A__bss_start
w__cxa_finalize@@GLIBC_2.2.5
0000000000000620t__do_global_ctors_aux
0000000000000550t__do_global_dtors_aux
00000000002008b0d__dso_handle
w__gmon_start__
00000000002008b8A_edata
00000000002008c8A_end
0000000000000658T_fini
0000000000000468T_init
0000000000000600Tadd
00000000000004a0tcall_gmon_start
00000000002008b8bcompleted.6557
00000000000004c0tderegister_tm_clones
00000000002008c0bdtor_idx.6559
00000000000005d0tframe_mmy
0000000000000500tregister_tm_clones
熱點內容
移動寬頻密碼重置後怎麼辦 發布:2025-05-20 01:02:04 瀏覽:806
php不是內部命令 發布:2025-05-20 00:41:09 瀏覽:96
淘寶圖片上傳用什麼軟體 發布:2025-05-20 00:40:55 瀏覽:345
mysql64位forlinux 發布:2025-05-20 00:37:25 瀏覽:344
工傷輔助器如何配置 發布:2025-05-20 00:25:13 瀏覽:601
opencv存儲圖片 發布:2025-05-20 00:16:10 瀏覽:952
ug編程鏈輪 發布:2025-05-20 00:14:03 瀏覽:99
手機鎖屏壁紙配置失敗怎麼解決 發布:2025-05-20 00:10:38 瀏覽:756
源碼編譯的軟體怎麼卸載 發布:2025-05-20 00:05:29 瀏覽:488
access腳本 發布:2025-05-19 23:38:54 瀏覽:219