说,我想用Linux编写一个用C ++编写的程序,我需要一些特定的库。有两种获取这些库的方法:
现在我的问题是:
对于第一种方法,我看到使用apt-get安装库和apt-get install library-dev下载库。我知道dev意味着开发或开发人员,但安装dev和不安装dev有什么区别?开发者究竟做了什么?
对于第二种方法,我是否需要使用编译器构建库?因为我已经看过教程,但是使用的操作系统通常是Windows,我只需要在Windows而不是Linux上构建它们吗?
另外,我只能对某个库使用第二种方法而不是第一种方法。提取后,我该怎么办?是否有手动安装库的默认方式或每个库是否不同?
最后,当我使用第一个方法安装库时?是/ usr / local / lib,/ usr / lib还是/ usr / include?因为当我必须在链接器的设置中链接到这些库时,我只写他们的名字,而不是路径,所以我假设已经有一个库的默认路径。
最后一个问题:是否有任何默认的安装和使用库的方式,或者这取决于我想做什么,编程语言等......?
答案 0 :(得分:1)
第二种方法非常广泛,因为它完全取决于项目的设计方式,包括使用的构建系统等。当您使用分发的托管包时,事情变得更加符合。
如果要开发使用该库的程序,则需要library-dev
包,该包通常包含C/C++/etc..
头文件。
许多开发包符合标准工具,可帮助构建系统查找库头文件和二进制文件。
例如libcurl
使用pkg-config
系统,因此可以从命令行找到其编译器组件,如下所示:
pkg-config libcurl --libs # print the library link flags
然后,您可以将其添加到Makefile
(或您使用的任何构建系统):
program:
g++ -o program program.cpp $(shell pkg-config libcurl --libs)
$(shell pkg-config libcurl --libs)
部分添加了正确的编译器标志以与库链接。
并非所有开发包装都使用pkg-config
。有些人带有他们自己的工具(比如mysql_config
),而有些人会让你猜测并尝试自己解决这个问题(看着你libclang
)。