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所示。

SylixOS IDE工具使用_SylixOS

 图 1.1 编译结果

在虚拟机上运行该示例程序,运行结果如 1.2所示。

SylixOS IDE工具使用_SylixOS_02

图 1.2 运行结果

2. 问题分析

1.1可知IDE附带的编译器默认使用的参数为:

-nostdlib -Wl,-shared -fPIC -shared

   其中参数“-Shared”,表示生成共享目标文件,通常在建立共享库时用到。链接器可以使用这种文件跟其它的可重定位文件和共享目标文件链接,产生新的目标文件。

      3. 示例验证

Linux环境下,测试用例如程序清单 1.1所示。

通过“gcc”编译器编译,添加“-Shared”参数编译时会报警告,编译结果如 3.1所示。

SylixOS IDE工具使用_IDE _03

图3.1 使用shared参数编译结果

不使用“-Shared”参数编译会出现错误,编译结果如 3.2所示。

SylixOS IDE工具使用_SylixOS_04

图3.2 不使用shared参数编译结果