Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
对图书馆的质疑 我想在Linux写一个C++程序,我需要一些特定的库。获取这些库有两种方法: 使用命令行-->apt get安装库 从他们的网站下载并提取.zip或.tar文件_C++_Linux_Libraries - Fatal编程技术网

对图书馆的质疑 我想在Linux写一个C++程序,我需要一些特定的库。获取这些库有两种方法: 使用命令行-->apt get安装库 从他们的网站下载并提取.zip或.tar文件

对图书馆的质疑 我想在Linux写一个C++程序,我需要一些特定的库。获取这些库有两种方法: 使用命令行-->apt get安装库 从他们的网站下载并提取.zip或.tar文件,c++,linux,libraries,C++,Linux,Libraries,现在我的问题是: 对于第一种方法,我看到使用apt-get-install-library和apt-get-install-library-dev下载库。我知道dev意味着开发或开发者,但是安装dev和不安装dev有什么区别?德夫到底是做什么的 对于第二种方法,是否需要使用编译器构建库?因为我看过教程,但使用的操作系统通常是Windows,我是否只需要在Windows而不是Linux上构建它们 另外,假设我只能对某个库使用第二种方法,而不能使用第一种方法。提取后,我该怎么办?是否有手动安装库的默

现在我的问题是:

对于第一种方法,我看到使用apt-get-install-library和apt-get-install-library-dev下载库。我知道dev意味着开发或开发者,但是安装dev和不安装dev有什么区别?德夫到底是做什么的

对于第二种方法,是否需要使用编译器构建库?因为我看过教程,但使用的操作系统通常是Windows,我是否只需要在Windows而不是Linux上构建它们

另外,假设我只能对某个库使用第二种方法,而不能使用第一种方法。提取后,我该怎么办?是否有手动安装库的默认方式,或者每个库是否不同

最后,当我使用第一种方法时,库安装在哪里?它是/usr/local/lib、/usr/lib还是/usr/include?因为当我必须在链接器的设置中链接到这些库时,我只写它们的名称,而不写路径,所以我假设库已经有了默认路径


最后一个问题:是否有安装和使用库的默认方式,或者这取决于我想做什么,编程语言,等等?

第二种方法非常广泛,因为它完全取决于项目的设计方式,包括使用的构建系统等。当您使用发行版的托管包时,事情会变得更加一致

如果您想开发一个使用库的程序,您需要
library dev
包,该包通常包含
C/C++/etc..
头文件

许多开发包都符合一个标准工具,该工具可以帮助构建系统查找库头文件和二进制文件

例如,
libcurl
使用
pkg-config
系统,因此可以从如下命令行找到其编译器组件:

pkg-config libcurl --libs # print the library link flags
然后,您可以将其添加到
Makefile
(或您使用的任何构建系统):

$(shell pkg config libcurl--libs)
部分添加了正确的编译器标志以链接库


并非所有的开发包都使用
pkg-config
。有些人有自己的工具(如
mysql\u config
),而有些人让你自己猜测并尝试弄清楚(看看你的
libclang
)。

你想用这个库构建吗?然后您需要开发包。开发包通常包含头文件和静态库。@JoachimPileborg我不知道是否要构建库。这就是我想弄明白的。我什么时候需要建一个图书馆?为什么有必要建造它?我不是很有经验。不是建图书馆,是建图书馆。正如我所说,开发包
libsomename dev
通常包含从您自己的源代码使用库所需的头文件。@JoachimPileborg所以,如果我想编写一个使用函数、常量等的程序。。。从这个库那时候我需要开发人员?好的,我明白了。非开发包呢?其中包含什么?包含实际(非静态)库和库可能需要的其他运行时支持文件。每个想要运行与库链接的程序的人都需要非开发包。
program:
     g++ -o program program.cpp $(shell pkg-config libcurl --libs)