簡體   English   中英

我可以在 Compiler Explorer 中編譯和 dlopen 動態庫嗎?

[英]Can I compile and dlopen a dynamic library in Compiler Explorer?

只是為了學習的目的,我做了一個主程序的小例子,它通過dlopen暫時加載一個共享庫(然后通過dlsym從它加載一個符號),如果前者不可用,則使用默認的。

在我的機器上,為了使非默認庫可用於主程序,我需要通過g++ -fPIC -shared MyLib.cpp -o libMyLib.so編譯前者,而main.cppDefaultLib.cpp都是簡單編譯的通過g++ -c main.cpp -o main.og++ -c DefaultLib.cpp -o DefaultLib.o 如何在編譯器資源管理器中為MyLib.cpp的編譯提供-fPIC -shared -shared 選項?

目前的嘗試是在這里,我相信, MyLib.cpp的編譯就像其他兩個cpp文件一樣,即沒有提供選項-fPIC-shared ,也許最重要的是沒有生成名為libMyLib.so的文件,因此導致dlopen加載失敗; 實際上,來自另一個默認庫DefaultLibfoo被調用。

我可以在 Compiler Explorer 中編譯和 dlopen 動態庫嗎?

是的,這當然是可能的。

CMakeLists.txt中:

add_library(MyLib SHARED MyLib.cpp)

...並從add_executable MyLib.cpp

然后在main.cpp中:

void * lib = dlopen("build/libMyLib.so", RTLD_LAZY);

因為庫是放在build子目錄下的。

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM