Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 创建静态库和只导入代码有什么区别?_C_Microcontroller_Lpc - Fatal编程技术网

C 创建静态库和只导入代码有什么区别?

C 创建静态库和只导入代码有什么区别?,c,microcontroller,lpc,C,Microcontroller,Lpc,我想知道有什么区别,还有什么更好,用我需要的公共代码创建一个静态库,或者只是将文件导入到项目中 使用库,您可以不使用源代码分发代码。如果您有源代码,那么您的编译器就有机会优化代码 “更好”取决于您的标准。您的意思是手动移动代码?我认为不同之处在于链接期间,编译器优化略有不同。静态库本质上是在编译时发生的“对公开代码的复制” 对我来说,这更像是一种代码重用。另一方面,动态库更为复杂和灵活,因为函数仅在运行时调用。因此,与使用完全相同的源代码使用静态库编译的程序相比,使用动态库链接的程序具有更少的二

我想知道有什么区别,还有什么更好,用我需要的公共代码创建一个静态库,或者只是将文件导入到项目中

使用库,您可以不使用源代码分发代码。如果您有源代码,那么您的编译器就有机会优化代码


“更好”取决于您的标准。

您的意思是手动移动代码?我认为不同之处在于链接期间,编译器优化略有不同。静态库本质上是在编译时发生的“对公开代码的复制”

对我来说,这更像是一种代码重用。另一方面,动态库更为复杂和灵活,因为函数仅在运行时调用。因此,与使用完全相同的源代码使用静态库编译的程序相比,使用动态库链接的程序具有更少的二进制信息。我刚才也比较过自己


是的,Scott在代码分发方面是绝对正确的。

嵌入式项目的另一个区别是,您可能希望使用不同的项目设置编译库,因此这将是一个优势。但是,如果所有源都在项目中,那么优化器可以通过使用寄存器传递变量等来做更多的工作


嵌入式编译器可能是非常糟糕的,有时你不得不手工输入。(我记得有一个8051 c编译器甚至不会进行常量表达式折叠,uggh。)

你说的“导入”是什么意思?为什么是静态库?为什么不是一个动态库呢?当使用静态库时,事情已经被编译了->更短的构建时间。当使用与主项目一起构建的源代码时,您可以确保构建环境中的任何更改(新编译器等)都不会导致问题。使用导入,我的意思是将库的源代码放在要使用它编译的项目中。我相信要拥有动态库,我必须拥有一个操作系统,在这种情况下,我没有。我在为微控制系统编程。“如果你有源代码,那么你的编译器就有机会优化代码。”-它也有可能在没有源代码的情况下进行优化。”…区别在于链接期间,编译器优化略有不同。”-在链接时,编译器已经完成了它的工作,由链接器进行优化(例如,删除未使用的代码)。@直到我正确记住我的编译器课程,链接阶段也会进行优化。不过我的措辞不正确,应该是
链接器优化