dynamic-linking

    7熱度

    2回答

    我有一個不在$ LD_LIBRARY_PATH中的本地共享庫。 我想運行我的可執行文件,但是因爲它無法在系統文件夾中找到共享庫,所以輸出「加載共享庫時出錯」。 可能的解決方法是導出包含本地庫文件夾的新LD_LIBRARY_PATH。 如何在CMake中自動導出此環境變量?

    0熱度

    1回答

    dlopen原型: void * dlopen(const char * filename,int flag); 我需要的是: void * dlopen(const char * pBufferWithSoContents,int flag); 我不想將library.so存儲在文件系統中。我想將它存儲在內存緩衝區中,而不是在文件系統中。任何人都知道我可以使用任何解決方案?

    1熱度

    1回答

    我在這個問題中解釋了我的目標HERE 是否有可能找到加載到程序中的動態符號表中符號條目的地址? 如果我們能找到它,我們可以以某種方式編輯它嗎?例如,如果應用程序調用了名爲original_func的函數,那麼該控件應該實際來到我的hook_func,並從那裏調用original_func。 更新: 根據「就業俄羅斯人的回答有些代碼: extern Elf32_Dyn _DYNAMIC[]; i

    0熱度

    1回答

    我正在研究C代碼,但需要與C++代碼耦合。我Makefile.am有一個像 libfoo_la_LIBADD += -lstdc++ 線,但所產生的libtool檔案libmhd.la沒有-lstdC++在dependency_libs,並在鏈接時間錯誤,如刷新我的屏幕「未定義的引用」,以STDC++符號。我試圖添加-lstdC++到libfoo_la_LDFLAGS,也試過「make LDF

    1熱度

    2回答

    我想創建一個模塊化的遊戲系統,並且我希望用戶定義的類能夠被序列化。爲此,我將放置從多態基類驅動的類。嘗試在此課程上實施序列化時,我遇到了麻煩。我不斷收到未註冊的類異常(運行時錯誤)。 這裏是一個最小的測試用例: 環境:Windows 8.1 MSVC++ 12(視覺工作室2013) parent_class.h - 定義parent_class類,它是多晶型 #pragma once #inc

    1熱度

    1回答

    我習慣於在大多數Linux發行版上與libGL.so鏈接。無論是mesa的實施還是NVIDIA的。但是,我真的想限制自己的OpenGL ES 2.X功能,所以我試圖鏈接和使用libGLESv2.so。但是,我看到的GLX函數中不存在的libGLESv2.so動態部分: nm --dynamic /usr/lib64/nvidia/libGLESv2.so | grep glX 也試圖在以GLX

    0熱度

    1回答

    有沒有辦法將共享庫加載到進程中的共享內存中,以便其他進程可以簡單地將共享內存映射到相同的地址並簡單地調用函數?我知道共享庫中的外部需要額外跳轉到特定於進程的內存位置以調用適當的函數(如elf plt)。但是,對於今天的工具來說,這樣的事情是否可行?

    2熱度

    1回答

    給出一個動態鏈接的ELF二進制文件,比如說/bin/less。 二進制內部,存在要由共享庫提供的函數的調用,例如strcpy() 如何可以找出從共享庫/共享對象獲得strcp功能? 換句話說,我想獲得func_name/shared_obj_name.so對。 接聽this post,邁克爾·斯萊德說: ELF文件沒有指定哪些符號來自哪個庫;它 只是添加一個共享庫列表鏈接到ELF二進制文件,並允許

    2熱度

    1回答

    我有一個foo2函數定義在foo.so,當我動態加載到主程序中時,我試着瞭解基地址和函數foo的地址。該代碼是下面的: void (* foo2)(void) = (void (*)(void))dlsym(loaded_so_handle, "foo2"); Dl_info info; dladdr(&foo2, &info); void * baseaddr = info.dli_fba

    4熱度

    1回答

    我想在Linux中對我的可執行文件中的庫進行硬編碼。在OS X上,這是通過在構建庫時提供-o參數後面的完整路徑來實現的。例如,我建在OS X這樣的庫: cc foo.c --shared -o /home/sander/libfoo.so 當我建立所謂的「酒吧」,與此庫鏈接的可執行文件,我用otool -L上的可執行文件,我得到這樣的輸出: bar: /home/sander/lib