Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C SW模块作为源代码与库交付_C_Object_Embedded - Fatal编程技术网

将C SW模块作为源代码与库交付

将C SW模块作为源代码与库交付,c,object,embedded,C,Object,Embedded,我正在使用C语言进行嵌入式编程(即,目标是一个微控制器),我需要将软件模块作为目标代码(库)交付给客户团队使用 通常我将软件作为源代码交付,我知道如何集成(编译、链接源代码)的约束,但我不知道客户端obj(库)代码集成的约束是什么 例如:-是否必须使用与我相同的编译器? -每次客户更改编译器选项、链接器选项等时,是否必须重新生成此库 提前感谢您的回答 Simo的答案在很大程度上取决于目标支持。您可能必须为以下所有组合提供库: 指令集 endianness FPU支持 调试支持 核心变体 还有

我正在使用C语言进行嵌入式编程(即,目标是一个微控制器),我需要将软件模块作为目标代码(库)交付给客户团队使用

通常我将软件作为源代码交付,我知道如何集成(编译、链接源代码)的约束,但我不知道客户端obj(库)代码集成的约束是什么

例如:-是否必须使用与我相同的编译器? -每次客户更改编译器选项、链接器选项等时,是否必须重新生成此库

提前感谢您的回答


Simo的答案在很大程度上取决于目标支持。您可能必须为以下所有组合提供库:

  • 指令集
  • endianness
  • FPU支持
  • 调试支持
  • 核心变体
还有可能更多。例如,我使用的针对ARM Cortex-M3、4和7的特定RTO按照20个变体的顺序生成

显而易见的方法是使用一个构建系统,该系统将在单个构建中生成所有必需的组合

编译器之间的目标代码兼容性决不是给定的,因此您可能还必须为多个编译器构建,这反过来可能需要许可证 每一个。这可能很昂贵,而且在大多数情况下,不允许对您分发的代码使用试用版或评估版


另一种方法可能是使用源代码模糊器,该模糊器将使您的代码几乎不可读,并且很难修改或反向工程,同时允许您的客户针对其特定目标和所需的编译器/链接器设置进行编译。

非常感谢您提供的详细答案。代码模糊器是一个选项。在我的上下文中,我可以要求我将交付给的团队精确地描述开发和目标环境。顺致敬意,