dlopen

    2熱度

    1回答

    這是我的第一篇文章,我試圖遵守論壇規則。 我知道這個問題已被問過很多次,但提供的解決方案不適合我。我不太清楚爲什麼會這樣,可能我忽略了一些東西。 我想從駐留在主應用程序內的共享模塊(.so)符號(變量和函數)訪問。 我總是收到鏈接錯誤(「未定義的參考」)。這裏所描述的,與我使用普通的C而不是C++的一個厚望 的情況是類似的: shared object can't find symbols in

    3熱度

    1回答

    我想打開一個共享對象作爲數據文件並對其執行驗證檢查。驗證是簽名檢查,我簽署共享對象。如果驗證成功,我想將當前打開的共享對象作爲適當的共享對象加載。 第一個問題:是否可以在簽名檢查期間調用dlopen並加載共享對象作爲數據文件,以便代碼不是執行?根據手冊頁,我不這麼認爲,因爲我沒有看到類似於RTLD_DATA的旗幟。 由於我將共享對象作爲數據文件打開,因此我有描述符可用。驗證成功後,我想將描述符傳遞

    1熱度

    2回答

    在我的應用程序中,我使用這種方式獲取電池信息(通過IOKit)。 static void print_raw_battery_state(io_registry_entry_t b_reg) { CFBooleanRef boo; CFNumberRef n; int tmp; int cur_cap = -1; int max_cap = -1;

    0熱度

    1回答

    我正在研究C庫的測試環境。該庫廣泛使用全局變量,我想檢查測試代碼。不幸的是,我必須動態加載庫(使用libdl)才能重置函數靜態變量。這樣我必須使用dlsym()加載每個全局,並且我必須手動將它們逐個轉換爲正確的類型。有沒有什麼辦法來自動化,並以某種方式獲得變量的類型信息? 據我看到libdl沒有這樣的功能。我想知道我可以鏈接到gdb,使用它來訪問共享庫全局變量,但我沒有設法找到任何有關這種可能性的

    5熱度

    1回答

    在Linux上,我有一個使用dlopen()加載一些共享庫的C++應用程序,但我懷疑被加載的共享庫的版本不是我期望的版本,因爲我的調試跟蹤代碼沒有出現被執行。 是否有辦法檢查正在運行的進程以查詢它當前打開的所有共享庫以及每個這些庫的路徑?換句話說,類似於ldd,但它適用於正在運行的可執行文件,並列出了運行時加載的庫。

    4熱度

    1回答

    我正在寫一個Java代理與JVMTI進行交互。由於我不會涉及的原因,我需要使用JVMTI(java進程中的C接口),而不是像java.lang.instrument或JDI這樣的Java API。我希望能夠做一些似乎不被直接支持的事情。 有沒有辦法在Java進程啓動後加載代理? 有沒有辦法從JVMTI代碼內部或從進程外部卸載Java代理(不會殺死整個Java進程)?例如,如果我能找到動態加載模塊的

    2熱度

    1回答

    我必須在Linux中動態加載.so,但我發現很難處理相同的名稱庫。 我有2 libtest.so在不同的目錄,他們依賴於其他不同的庫。 我的程序讀取配置文件來決定加載哪個libtest.so。例如: /usr/kyle/v1/libtest.so /usr/kyle/v2/libtest.so 它們都沒有在ldconfig中註冊。 那麼如何使用dlopen加載不同版本的libtest.so?

    -1熱度

    2回答

    兩種不同的dlopen & dlclose夫婦,在dlopen上被封鎖。 掛在dlopen,它不輸出任何內容,cpuidle降到0%,並且不能通過ctrl + c退出。 LOG_TRACE("attaching..."); handle = dlopen(plugin_path.c_str(), RTLD_LAZY); LOG_DEBUG("dlopen called"); // this

    0熱度

    1回答

    有一個簡單的測試程序,它將dlopen()作爲DSO「/lib/libc.so.6」,然後打印符號「printf」的地址。 #include <dlfcn.h> #include <stdio.h> int main() { void* handle; void (*func)(); char* error_test; if (handle = dlo

    1熱度

    1回答

    我有一個程序調用dlopen(使用RTLD_NOW)來動態加載一個在運行時指定完整路徑但在程序第一次執行時不知道的庫。指定的庫與ANOTHER .so文件動態鏈接,該文件的位置在程序啓動之前還不知道,但在調用dlopen之前已知。關於如何讓這種情況發揮作用的任何想法?謝謝!