静态链接和动态链接的区别
在C语言中,已知生成可执行文件需要预编译、编译、汇编和链接,在链接过程中静态链接和动态链接之间存在差异。 静态链接过程将链接的内容链接到生成的可执行文件。 删除静态库不会影响可执行文件的执行,而动态链接这一过程不会链接内容,而是在运行过程中去查找要链接的内容,因为生成的可执行文件中没有要链接的内容,所以lm 动态链接生成的可执行文件比静态链接生成的文件稍小。
动态库和静态库的区别
关于不设定环境变量的情况
动态库通常存在于/usr/lib/目录下; 静态库可以位于任何目录中,第一次链接时使用绝对路径链接即可,以后删除不会影响生成的可执行文件。 如果可以设置环境变量,则动态库和静态库可以位于任何地方。 但是,动态库必须设置环境变量,并且如果链接了静态库,则需要绝对路径。 但是,一般来说,动态库位于/usr/lib中,所以大家应该都很熟悉。 链接动态库时,默认路径为/usr/lib。
各自的优缺点:
1、静态链接库比动态链接库运行速度快。 (执行过程不需要查找链接的内容。)
2、动态链接库更节约内存。 (没有写入要链接的内容)