意外地,我用-shared標誌與hello world C++程序鏈接並獲得了exe文件。但運行時輸出是段錯誤。有人能告訴我背後的原因嗎?C++共享標誌段錯誤
的方式重現:在日食ç
標準C++的hello world問題++。 在設置 - >共享庫設置中檢查共享標誌框。
構建輸出:
使所有 建築文件:../app.cpp 調用:GCC C++編譯器 克++ -O0 -g3 -Wall -c -fmessage長度= 0 -fPIC -MMD - MP -MF 「app.d」 -MT 「app.d」 -o 「app.o」 「../app.cpp」 建好:../app.cpp
建設目標:應用程序調用 :GCC C++ Linker g ++ -shared -o「app」./app.o
完成建築物目標:應用程序
執行輸出: 分段故障
由於
您已構建共享庫,而不是可執行文件。嘗試執行共享庫通常會導致分段錯誤。除非你想建立一個共享庫,否則不要使用'-shared'。 –
你能告訴我爲什麼執行共享庫會導致segFault?謝謝 – cppython
@cppython共享庫不需要入口點(函數main),因此係統無法知道從代碼開始執行的位置。此外,C運行時代碼中的可執行鏈接調用main(),如果main()返回,則調用exit()。 –