Linux上製作可執行的共享庫示例

2021-05-25 16:13:45 字數 712 閱讀 2039

x.cpp為共享庫libx.so的實現,b.cpp為可執行b的實現。

x.cpp檔案內容:

#include

#include

// 使用c++作為編譯器

void woo()

// foo作為共享庫的入口,必須為c函式

extern "c" foo()

b.cpp檔案內容:

int main()

編譯x.cpp為可執行的共享庫:

g++ -g -o libx.so -fpie -pie -nostartfiles -wl,-e,foo -rdynamic x.cpp

-fpie -pie是保證共享庫可以執行,其中-fpie編譯引數,表示生成與位置無關的可執行**(-fpic只是生成與位置無關的非可執行**),-pid是鏈結引數;-wl,-e,foo指定共享庫的入口函式,相當於可執行程式的main函式;如果沒有-nostartfiles,則鏈結時會報main函式未定義;-rdynamic也是必須的,否則編譯b.cpp時會報找不到foo定義;如需檢視詳細的編譯鏈結過程,加上-v引數。

請注意不能包含-shared引數,否則執行共享庫時直接段錯誤。

編譯b.cpp為可執行檔案:

g++ -g -o b -l. -lx  b.cpp

成功之後,libx.so和b都是可執行的了,其中libx.so的入口是foo,而b的入口是main函式。

Linux上製作可執行的共享庫示例

x.cpp為共享庫libx.so的實現,b.cpp為可執行b的實現。x.cpp檔案內容 include include 使用c 作為編譯器 void woo foo作為共享庫的入口,必須為c函式 extern c foo b.cpp檔案內容 int main 編譯x.cpp為可執行的共享庫 g g ...

Linux上製作可執行的共享庫示例

x.cpp為共享庫libx.so的實現,b.cpp為可執行b的實現。x.cpp檔案內容 include include 使用c 作為編譯器 void woo foo作為共享庫的入口,必須為c函式 extern c foo b.cpp檔案內容 int main 編譯x.cpp為可執行的共享庫 g g ...

怎樣製作可執行的JAR檔案

這是我在網上找的,能生成可以執行的jar檔案,太有成就感了 若要生成乙個名為 cal.jar 的可執行jar檔案 檔名可以是任意合法名字 這是我認為簡單實用的一種方法,還有很多別的方法在此就不介紹了 第一 把程式生成的所有位元組碼檔案 即.class檔案 放在同乙個目錄下 如 d chat 第二 在...