1. 問題描述函數
使用RealEvo-IDE(如下簡稱IDE)開發程序時,誤操做輸入錯誤的函數名稱時,編譯器不會報錯,輸入錯誤的函數名示例代碼如程序清單 1.1所示。測試
程序清單 1.1 示例代碼開發
#include <stdio.h> int main (int argc, char **argv) { print("Hello World!\n"); return (0); }
控制檯輸出編譯結果如圖 1.1所示。編譯器
圖 1.1 編譯結果虛擬機
在虛擬機上運行該示例程序,運行結果如圖 1.2所示。io
圖 1.2 運行結果編譯
2. 問題分析class
由圖 1.1可知IDE附帶的編譯器默認使用的參數爲:gcc
-nostdlib -Wl,-shared -fPIC -shared
其中參數「-Shared」,表示生成共享目標文件,一般在創建共享庫時用到。連接器能夠使用這種文件跟其它的可重定位文件和共享目標文件連接,產生新的目標文件。gc
3. 示例驗證
在Linux環境下,測試用例如程序清單 1.1所示。
經過「gcc」編譯器編譯,添加「-Shared」參數編譯時會報警告,編譯結果如圖 3.1所示。
圖3.1 使用shared參數編譯結果
不使用「-Shared」參數編譯會出現錯誤,編譯結果如圖 3.2所示。
圖3.2 不使用shared參數編譯結果