首页建站pkg(Linux下载管理工具PKG的介绍)

pkg(Linux下载管理工具PKG的介绍)

编程之家2024-02-17105次浏览

一、linux里的pkgconfig相关问题

指定PATH环境变量路径就好了

pkg(Linux下载管理工具PKG的介绍)

一般来说,如果库的头文件不在/usr/include目录中,那么在编译的时候需要用-I参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用-I参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用-L参数,也会造成连接界面的不统一。编译和连接界面不统一会为库的使用带来麻烦。

为了解决编译和连接界面不统一的问题,人们找到了一些解决办法。其基本思想就是:事先把库的位置信息等保存起来,需要的时候再通过特定的工具将其中有用的信息提取出来供编译和连接使用。这样,就可以做到编译和连接界面的一致性。其中,目前最为常用的库信息提取工具就是下面介绍的 pkg-config。

pkg-config是通过库提供的一个.pc文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过 pkg-config提供的参数单独提取出来直接供编译器和连接器使用。

The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution.

pkg-config is a function that returns meta information for the specified library.

The default setting for PKG_CONFIG_PATH is/usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.

pkg(Linux下载管理工具PKG的介绍)

在默认情况下,每个支持 pkg-config的库对应的.pc文件在安装后都位于安装目录中的 lib/pkgconfig目录下。例如,我们在上面已经将 Glib安装在/opt/gtk目录下了,那么这个 Glib库对应的.pc文件是/opt/gtk/lib/pkgconfig目录下一个叫 glib-2.0.pc的文件:

prefix=/opt/gtk/

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

glib_genmarshal=glib-genmarshal

pkg(Linux下载管理工具PKG的介绍)

gobject_query=gobject-query

glib_mkenums=glib-mkenums

Name: GLib

Description: C Utility Library

Version: 2.12.13

Libs:-L${libdir}-lglib-2.0

Cflags:-I${includedir}/glib-2.0-I${libdir}/glib-2.0/include

使用 pkg-config的--cflags参数可以给出在编译时所需要的选项,而--libs参数可以给出连接时的选项。例如,假设一个 sample.c的程序用到了 Glib库,就可以这样编译:

$ gcc-c `pkg-config--cflags glib-2.0` sample.c

然后这样连接:

$ gcc sample.o-o sample `pkg-config--libs glib-2.0`

或者上面两步也可以合并为以下一步:

$ gcc sample.c-o sample `pkg-config--cflags--libs glib-2.0`

可以看到:由于使用了 pkg-config工具来获得库的选项,所以不论库安装在什么目录下,都可以使用相同的编译和连接命令,带来了编译和连接界面的统一。

使用 pkg-config工具提取库的编译和连接参数有两个基本的前提:

库本身在安装的时候必须提供一个相应的.pc文件。不这样做的库说明不支持 pkg-config工具的使用。

pkg-config必须知道要到哪里去寻找此.pc文件。

GTK+及其依赖库支持使用 pkg-config工具,所以剩下的问题就是如何告诉 pkg-config到哪里去寻找库对应的.pc文件,这也是通过设置搜索路径来解决的。

对于支持 pkg-config工具的 GTK+及其依赖库来说,库的头文件的搜索路径的设置变成了对.pc文件搜索路径的设置。.pc文件的搜索路径是通过环境变量 PKG_CONFIG_PATH来设置的,pkg-config将按照设置路径的先后顺序进行搜索,直到找到指定的.pc文件为止。

安装完 Glib后,在 bash中应该进行如下设置:

$ export PKG_CONFIG_PATH=/opt/gtk/lib/pkgconfig:$PKG_CONFIG_PATH

可以执行下面的命令检查是否/opt/gtk/lib/pkgconfig路径已经设置在 PKG_CONFIG_PATH环境变量中:

$ echo$PKG_CONFIG_PATH

这样设置之后,使用 Glib库的其它程序或库在编译的时候 pkg-config就知道首先要到/opt/gtk/lib/pkgconfig这个目录中去寻找 glib-2.0.pc了(GTK+和其它的依赖库的.pc文件也将拷贝到这里,也会首先到这里搜索它们对应的.pc文件)。之后,通过 pkg-config就可以把其中库的编译和连接参数提取出来供程序在编译和连接时使用。

另外还需要注意的是:环境变量的设置只对当前的终端窗口有效。如果到了没有进行上述设置的终端窗口中,pkg-config将找不到新安装的 glib-2.0.pc文件、从而可能使后面进行的安装(如 Glib之后的 Atk的安装)无法进行。

在我们采用的安装方案中,由于是使用环境变量对 GTK+及其依赖库进行的设置,所以当系统重新启动、或者新开一个终端窗口之后,如果想使用新安装的 GTK+库,需要如上面那样重新设置 PKG_CONFIG_PATH和 LD_LIBRARY_PATH环境变量。

二、Linux服务器 如何安装pkg包 软件

pkg?

没见过……貌似是非常偏门的 Linux系统吧……

你看看/etc/里面有没有什么含有 release的文件,这个文件里面一般是发行版的名字和版本

另外/etc/issue和类似的文件里面是登录的提示信息,一般这个提示也是发行版的名字和版本

你先确定具体用的是哪种系统弄来的吧……

或者是 FreeBSD?好像 bsd系列的扩展名是 pkg。

三、Linux安装软件的方法哪种好

根据个人以及系统的实际情况而定,一般RPM包的方法比较简单。

软件安装分几种情况:

一、源码安装:

对于本身具有开源血统的Linux系统来说,几乎所有的开源软件都支持在Linux平台运行,而这些软件一般都以源码打包形式分发,源码安装适用于所有Linux分支,只需要系统安装了gcc、make、以及automake和autoconf,源码安装的一般方法如下:

1、cd源码目录

2、./configure [opts]

3、make

4、make install

其中configure后面的选项一般可以通过./configure--help来查询,根据自己的喜好使用一些选项。这里正确的工作流程是先看源码目录下面的Readme,这里一般会有提示安装方法,那么只需要按照描述照办即可,如果Readme没有提示(事实上很少),如果其中提及到官网,可以到官网去查阅相关安装文档,如果没有,可以google搜索软件的安装方法。

2. rpm包安装

RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,几乎在所有的Linux平台上都支持,已经成为行业标准。这里简单介绍一下包管理器,包管理器提供

对软件的安装、升级、查询以及卸载等,具体差别可以查阅相关文档。rpm包的安装非常简单,只需要输入rpm-i xxx.rpm即可完成,卸载只需要rpm-e包名即可完成,升级通过rpm-U包名命令完成(需要机器联网),rpm-q提供相关查询,这里不详细说明。如果机器没联网,rpm安装安装过程很有可能出现错误,最常见的就是依赖包缺失,把缺失的依赖包安装即可;如果在机器联网的情况下,rpm会自动在互联网搜索相关依赖包并安装。

3. deb包安装

deb是debian及其衍生版本如Ubuntu的安装包,在这两个系统的桌面环境下,可双击包直接安装,在命令行下可以通过dpkg-i xxx.deb完成,通过dpkg-r包名

完成。很多的Linux分支都提供了apt-get包管理系统来对deb软件包进行支持,apt-get需要机器联网,通过source.list文件提供的源(下载源)去下载相应软件包,通过输入命令apt-get install软件包名直接安装软件,输入 apt-get remove软件包名卸载对应软件包,这里不赘述命令,apt-get包管理器实施对依赖包的管理,所以非常方便。在国内可以找一些速度快的源(更改source.list文件),具体方法可以查阅相关文档。

4. yum安装软件包

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的软件包管理器,yum也对依赖关系进行管理,必须在联网条件下进行

(也可以给yum设置代理),使用yum安装软件也是本人最常用的方法,在shell命令行下输入yum install软件包名即可完成安装,如果依赖包没安装,会自动安装,卸载通过yum remove包名即可完成,与apt-get类似。

linux端口映射(映射Linux下实现端口映射的方法)MAYA确认登陆(正版maya安装时)