vxworks的ld和loadmodule全局变量都放在哪儿,是否检测多个.out重复
时间: 2024-04-22 08:21:58 浏览: 131
基于DSP芯片和VxWorks操作系统的RTOS视频网络检测系统
在VxWorks中,全局变量在使用ld和loadmodule加载模块时被存储在共享内存中。对于ld,所有全局变量都被静态地链接到可执行文件中,当应用程序启动时,所有全局变量都被加载到内存中。对于loadmodule,全局变量被存储在共享内存中,该共享内存由操作系统管理,所有模块都可以访问全局变量,但只有加载了该模块的模块才能修改它。
当使用ld链接器时,如果多个.out文件定义了相同的全局变量,链接器会将它们合并为一个全局变量,防止重复定义。如果链接器无法解决重复定义的问题,它将会抛出一个链接错误。
当使用loadmodule动态加载模块时,多个模块定义相同的全局变量可能会导致命名冲突。为了解决这个问题,VxWorks提供了一种命名空间机制。每个模块都有自己的命名空间,不同模块中的同名全局变量会被存储在不同的命名空间中,从而避免命名冲突。
综上所述,ld和loadmodule都将全局变量存储在共享内存中,但处理方式有所不同。在ld中,链接器会检测并合并相同的全局变量,如果无法解决重复定义,将抛出链接错误。在loadmodule中,使用命名空间机制来避免命名冲突。
阅读全文