dlopen

    2熱度

    1回答

    現在我在linux下編寫一個可加載的.so模塊,我想在主程序中使用dlopen,並在可加載的.so模塊中使用_init()。我的計劃是這樣的: 主程序: ... dlopen(lib, flags); ... 加載模塊: #define MODULE_EXPORT(name, minit, mexit) \ int __##name##_init(void) __attribut

    0熱度

    1回答

    我使用dlopen()加載.so庫。圖書館撥打myfunc()。該功能可用於裝載機的版本1.0。所以致電myfunc()作品。然而,在版本0.9中,沒有myfunc(),並且libdl顯示關於延遲綁定失敗的錯誤。 我可以在so.庫內檢查是否存在myfunc(),然後才調用函數?該函數不是必需的,不重要,如果loader的版本號爲0.9或更低,我可以安全地跳過它。

    1熱度

    1回答

    在將共享庫(.so)與dlopen鏈接起來之後,我們如何知道鏈接共享對象的大小,即直到dlopen返回的句柄的偏移量是分配的共享庫。

    0熱度

    1回答

    我使用dlopen爲我的項目製作了插件。 我想讓我的主程序停止嘗試再次加載插件,當沒有這樣的。 有沒有什麼好的解決方案呢? 我需要比較錯誤消息嗎? 請幫我

    0熱度

    1回答

    我假設我在使用dlopen時不必鏈接到共享庫。然而,在cmake的target_link_libraries(main_dlopen dl)導致鏈接錯誤 main_dlopen.cpp.o: In function `main': main_dlopen.cpp:25: undefined reference to `ntclass::init(char const*)' etc... 如

    2熱度

    1回答

    我的目標是鉤住dlopen在Linux上使用的開放函數。出於某種原因,這段代碼並沒有鉤住dlopen-> open,但它確實鉤住了我打開main.c-> open的版本。 dlopen不會使用我的符號嗎? 編譯過程如下: gcc main.c -ldl -ggdb gcc fake-open.c -o libexample.so -fPIC -shared export LD_PRELOAD="$

    0熱度

    1回答

    cmakeadd_library文件說, 共享庫動態鏈接 並在運行時加載。 MODULE庫是插件,不是鏈接到其他目標中的 ,但可以使用類似於dlopen的功能在運行時動態加載 。 實際上,我可以同時看到SHARED和MODULE型目標生成在Linux上.so動態庫。 .so庫是動態鏈接的,在運行時加載並使用dlopen()進行映射。這兩種類型的目標有何不同?

    0熱度

    2回答

    我複製粘貼了How would a loaded library function call a symbol in the main application?的代碼,以幫助我瞭解加載庫的工作原理。但是,當我試圖運行它,它說,它無法找到該文件,但該文件是正確的,在當前目錄下,當我做LS @APG9591:/mnt/c/Users/fried/Desktop/KI3/Game$ gcc -share

    1熱度

    3回答

    我已經在我的Mac上更新R到R3.4.0。不幸的是,現在我不能安裝任何取決於rtracklayer的生物導體封裝。 我有Bioc version 3.5和R version 3.4.0 我已經安裝了最新版本的BiocInstaller(v.1.26.0)。 從bioc安裝軟件包(如affy,limma或類似軟件)沒有任何問題。但一旦rtracklayer需要(所有註釋包)我得到的follwoing

    1熱度

    1回答

    我知道有RTLD_LOCAL標誌,它阻止來自加載庫的符號進入全局範圍。但問題是,無法阻止加載的庫隨後使用RTLD_GLOBAL調用dlopen,從而將符號插入到全局範圍。 有沒有辦法來防止這種情況發生?