2014-07-03 62 views
0

我正准备在debian系统上构建crypto ++库,尽管debian存储库通过apt-get提供它们我想从源代码执行它以确保编译的库是最新的,并且只建立一些选项。在构建库之前选择选项

默认的makefile被配置为构建静态库,发布构建,并且我想为我的需要修改makefile并在其中添加一些其他的东西。

基本上我会使用这些库仅用于学习,没有任何类型的发布程序,所以我的问题是我是否需要发布构建或调试进行学习,我也不确定是否更好地构建共享或静态学习目的的图书馆?

我想这个问题听起来很有趣,但我不确定为什么我需要调试库来调试简单的程序?或者自行调试库?

+0

使用调试时,您将获得编译器提供的有关错误的更多信息。 –

+0

不错,共享库的学习目的是什么? – codekiddy

+0

我认为共享是更好的发布,因为他们共享代码之间的程序使用它们,静态只是copypasta整个lib到您的exe。开发使用静态更容易,因为你只需要exe(更大但不指向各种共享库) –

回答

1

调试和发布lib之间的区别在于,调试通常会有更多的内部检查来确保您正确使用该库,相对应的是该库也更重且更慢。这就是为什么使用发行版lib完成发布版本的原因。

静态链接(复制):一个大的exe文件,更加舒适的开发。你将你使用的图书馆的部分移动到你的二进制文件中。

动态链接(参考):一个小的exe文件加上一个或多个.so/.dll文件。您的可执行文件使用对库的引用,因此使用相同库的X程序只能引用相同的库实例。它不会像静态链接那样复制代码。

+0

谢谢,这正是我想知道的,.a文件在学习时更容易处理。 – codekiddy

+0

好吧,它在开始时比较容易,但是一旦你设法正确地设置你的共享库(调试/发布),它就是一样的。最重要的是挑选图书馆的** debug **/release版本。 –

相关问题