标签:示例 return text 1.5 parent ext 虚拟 for 重定位
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参数编译结果
标签:示例 return text 1.5 parent ext 虚拟 for 重定位
原文地址:http://blog.51cto.com/12558126/2060322