cgo LDFLAGS查找静态库或者动态库的过程是怎么样的

cgo LDFLAGS查找静态库或者动态库的过程是怎么样的,第1张

Cgo 使得Go程序能够调用C代码 cgo读入一个用特别的格式写的Go语言源文件, 输出Go和C程序, 使得C程序能打包到Go语言的程序包中 举例说明一下 下面是一个Go语言包, 包含了两个函数 -- Random 和 Seed -- 是C语言库中random和srandom函数的马甲

首先,想要知道动态库,我们得了解C++/C以及计算机的一些背景知识。

一般而言,在Windows下,dll文件就是动态库文件。用C++/C开发的程序,在发布的时候,会出现两种情况,第一,整个软件就只有一个文件,你只要双击那个exe文件,就可以运行。第二,除了exe之外,还有dll等文件。在这里,我们假设的文件只有exe文件和dll文件, 不讨论什么图标之类文件。

只有一个文件的,库已经嵌到那个exe里面。而有很多dll文件的程序,库没有嵌入到exe里面。所以,你可以看一下,如果那个exe文件大小非常大,那就说明是静态链接,在开发的时候是使用静态库。如果那个exe非常小,那么一般是使用的动态库。

那么问题来了,动态库与静态库相比优势又是什么。动态库节约内存,为什么这么说呢。假如两个类型的程序,如果他们都有一个共同使用的dll,那么在内存里面,只有一份,而不是两份。如果是使用了静态库,这会有两份,会有很大的浪费空间。

当然,使用动态库还有需要注意的地方。比如,有两个名字一模一样的动态库Qtcore4dll,但是呢,一个dll是用vs2010编译器生成的,一个是用vs2015编译器生成的。如果,exe使用的dll弄错的话,程序结果会不对或者其他奇葩的问题。

以上均是一个大致的讲解,细节部分请参考程序员的自我修养这本书!

以上就是关于cgo LDFLAGS查找静态库或者动态库的过程是怎么样的全部的内容,包括:cgo LDFLAGS查找静态库或者动态库的过程是怎么样的、动态库 是什么、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10137639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存