當前位置:首頁 » 編程軟體 » 編譯選項shared

編譯選項shared

發布時間: 2022-03-12 03:17:32

linux編譯,gcc -shared這個是幹啥的

編譯成動態庫用的。

② eclipse c/c++編譯時提示 shared library load failed

http://blog.csdn.net/iaiti/article/details/39344895

③ linux 怎麼編譯.so文件

.so是linux用的 所以 要生成so 需要用gcc 和生成可執行文件類似,只是增加一些編譯選項 命令如下 gcc SOURCE_FILES -fPIC -shared -o TARGET SOURCE_FILES可以是.c文件,也可以是經過-c編譯出來的.o文件 TARGET為so文件。

④ 如何初始化一個shared

如何初始化一個shared
第一句 #pragma data_seg("Shared") 創建一個稱為Shared 的新節。
第二句 int volatile g_lAppInstance =0 將 g_lAppInstance 放入Shared節中。注意此時只有將g_lAppInstance初始化,編譯器才會將其放入Shared節中,否則,將放入Shared以外的節。(實際上Visual C++ 編譯器提供了一個allocate 說明符,使我們可以將數據放到任何節中。)
第三句指示編譯器Shared 節結束。#pragma comment(linker,"/section:Shared,RWS")
這一句,我們使編譯鏈接器知道我們的Shared節具有讀,寫,共享的屬性。這是我們實現互斥運行的關鍵。這樣我們就可以在應用程序之間的多個實例之間共享g_lAppInstance 變數。
在InitInstance() 函數中加入:if(++g_lAppInstance>1) { AfxMessageBox("程序已經運行!"); return FALSE; }
以上代碼的作用是在程序是開始對g_lAppInstancd 加1 ,如果發現其值大於1,那麼顯示Message Box ,並返回FALSE。(注意:在MFC中如果InitInstance返回FALSE,程序將不會被運行!)

⑤ matlab怎麼生成動態鏈接庫

1>首先生成目標文件,但是此時要加編譯器選項-fpic和鏈接器選項-shared,

gcc -fpic -c add.c

gcc -fpic -c sub.c

生成中間文件add.o和sub.o

2>其次生成動態庫

gcc -shared –o libtiger.so add.o sub.o

生成動態庫libtiger.so,libtiger.so就是我們生成的目標動態庫。我們以後使用動態庫和main.c程序生成可執行程序

說明:

以上兩部也可以合成一步搞定:

gcc -fpic -shared add.c sub.c -o libtiger.so

2.使用動態鏈接庫

在編譯程序時,使用動態鏈接庫和靜態庫是一致的,使用」-l庫名」的方式,在生成可執行文件的時候會鏈接庫文件。

1>使用命令:

gcc -o main main.c -L ./ -ltiger

2>-L指定動態鏈接庫的路勁,-ldtiger鏈接庫函數tiger。-ltiger是動態庫的調用規則。Linux系統下的動態庫命名方式是lib*.so,而在鏈接時表示位-l*,*是自己命名的庫名。

3>但是程序會提示如下錯誤

error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

⑥ 編譯時加了-shared參數,編譯沒有錯誤,運行是沒進入main函數就出現了段錯誤,什麼原因

找個類似於objmp的反編譯花激羔刻薏灸割熏公抹工具,然後會生成匯編代碼,前面有地址,直接定位地址,然後往上找函數名。

⑦ 為什麼使用gcc hello.c -fpie -pie -shared -o hello 編譯出來

pie 選項用於編譯可執行程序,而非lib

⑧ linux中的--enable-shared 什麼意思

這是 configure 常用的一個參數,表示啟用動態庫版本。
如果你要編譯一個庫的源代碼,可以把它編譯成靜態庫,也可以把它編譯成動態庫。如果你想編譯成靜態庫,就用 --enable-shared參數;如果你想編譯成靜態庫,就用--enable-static參數。

⑨ 多個.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

⑩ 我使用CUDA編程,在內核函數中定義了_shared_float A1[40];結果編譯說 identifier "_shared_" is undefine

1. 短橫少寫了一個。
2. 關於你說的重定義問題。這個我也碰到過。你的工程裡面是不是有個main函數所在的cu文件,還有個kernel函數所在的cu文件。你把你的kernel函數所在的cu文件,右鍵點屬性,將
exclude from build選成yes。再編譯一下看看。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:637
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:366
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:82
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:308
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:789
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:339
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:210
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:810
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:364
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:590