看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) CentOS 7 (VMware) 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) g++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 手邊有一個.so檔,想透過dlopen使用裡面的function, 雖然編譯過了,但是執行時出現segmentation fault。 初步排錯,改餵/usr/lib64下的內建library的.so沒問題, 這樣是表示這.so檔有問題嗎? 但我用nm print是沒問題的。 目前沒什麼頭緒,因此在這邊請教各位大大m(_ _)m 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 執行後Segmentation fault 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <dlfcn.h> int main(int argc, const char * argv[]) { void* func = dlopen("/home/test/libtest.so", RTLD_LAZY); //隨便換成內建的 /usr/lib64/libz.so.1.2.7 的話就能跑完 if (!func) { std::cerr << "Cannot load library: " << dlerror() << '\n'; return 1; } return 0; } 補充說明(Supplement): --
waterspout:其中這男子為什麼在對方說不後 仍強行撫摸對方下體10/11 21:45
waterspout:而裡面有沒有什麼秘密? 好!我們今天也請到了五位來賓10/11 21:46
e6638:皓平:其實馬雅人早就預言到了10/11 21:46
waterspout:皓平 我還沒叫到你
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.151.163 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1518370105.A.D89.html antirazin:轉錄至看板 LinuxDev 02/12 01:30
wtchen: 訊息不足,不補就砍文02/12 07:32
loveflames: 你是叫別人隔空抓藥嗎02/12 08:49
不好意思,晚上回去再補上可用的資訊~ ※ 編輯: antirazin (125.227.2.182), 02/12/2018 09:54:16 ※ 編輯: antirazin (123.51.176.121), 02/12/2018 10:24:36 ※ 編輯: antirazin (123.51.176.121), 02/12/2018 10:26:00
descent: 你先不要用 dlopen, 直接 link 是正常的嗎? 02/12 21:21
Link正常喔~ ※ 編輯: antirazin (114.24.189.45), 02/12/2018 22:29:15
descent: 試試看 gdb debug core 看能不能找出有問題的點 02/12 23:22
descent: 如果可以, 提供那個 .so source code 是最好的 02/12 23:23
後來編譯時我加上-L/home/test -ltest 時出現 /home/test/libtest.so: 未定義的參考到「SSL_connect」 /home/test/libtest.so: 未定義的參考到「TLSv1_client_method」 /home/test/libtest.so: 未定義的參考到「SSL_CTX_set_verify」 /home/test/libtest.so: 未定義的參考到「SSL_CTX_check_private_key」 /home/test/libtest.so: 未定義的參考到「SSL_get_peer_certificate」 發現可能是openssl沒有安裝的關係, 安裝完並且在編譯時加上-lssl -lcrypto 編譯過了但執行時出現錯誤: error while loading shared libraries: libssl.so.1.0.0: cannot open shared obje ct file: No such file or directory 看起來executable找不到libssl, 所以我再加上-Wl,-rpath,/usr/local/lib 執行就正常了! 還是謝謝各位大大的意見~ ※ 編輯: antirazin (114.24.156.179), 02/25/2018 22:23:18