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所示。
圖 1.2 運行結果
2. 問題分析
由圖 1.1可知IDE附帶的編譯器默認使用的參數爲:
-nostdlib -Wl,-shared -fPIC -shared
其中參數“-Shared”,表示生成共享目標文件,通常在建立共享庫時用到。鏈接器可以使用這種文件跟其它的可重定位文件和共享目標文件鏈接,產生新的目標文件。
3. 示例驗證
在Linux環境下,測試用例如程序清單 1.1所示。
通過“gcc”編譯器編譯,添加“-Shared”參數編譯時會報警告,編譯結果如圖 3.1所示。
圖3.1 使用shared參數編譯結果
不使用“-Shared”參數編譯會出現錯誤,編譯結果如圖 3.2所示。
圖3.2 不使用shared參數編譯結果