在Linux世界中,我几乎完全是菜鸟,并且在Windows 8.1机器上的VirtualBox下使用带有gnome-session-fallback(compiz)的Ubuntu 14.04 LTS。我的目标是使用此库:https : //github.com/akrinke/svg2cairo
我唯一需要的是编译“ svg2cairoxml.c”。这是此文件的非常简化的版本:
#include <stdio.h>
#include <stdlib.h>
#include <librsvg/rsvg.h>
#include <cairo/cairo.h>
int main(int argc, char *argv[]) {
return 0;
}
我尝试使用Code :: Blocks 13.12和Anjuta 3.10.2并没有成功。它们都在编译时产生错误“严重错误:librsvg / rsvg.h:没有这样的文件或目录”。我设法在另一个位置找到该文件:“ librsvg-2.0 / librsvg / rsvg.h”。因此,我更改了上面代码的第三行。后来我在stackoverflow答案之后安装了gtk dev库。然后,我遇到了无法解决的错误:文件“ rsvg.h”中的“致命错误:glib-object.h:没有这样的文件或目录”:
// this is line 31
#include <glib-object.h>
我也找到了这个文件,真正的路径是'glib-2.0 \ glib-object.h'。但是,'rsvg.h'是受保护的,所以我无法更改它。这就是我被困住的地方。
我也发现了以下指示:
https://stackoverflow.com/questions/7537008/compilation-error-while-using-librsvg但是对于像我这样的菜鸟来说,这些太复杂了。
我认为对于有经验的linux程序员来说,我的目标(编译唯一的小“ svg2cairoxml.c”文件)非常容易。那么有人可以帮我做吗?另外我想我做错了什么,例如使用错误版本的库或类似的东西。
当开发包将其头文件和/或库文件安装在不直接位于标准编译器搜索路径上的位置时,您需要自己明确指定位置。gcc
例如,要在命令行上执行此操作,可以使用适当的-I
(包含路径)和-L
(库路径)指令。您还需要使用-l
诸如-lrsvg-2
librsvg-2之类的指令,告诉链接器从这些搜索路径链接哪些特定的库。
由于路径和库可能变得非常复杂,并且取决于具体的平台而有所不同,因此某些开发包提供了程序包配置(.pc
)文件,pkg-config
实用程序可以查询该文件以在构建时生成适当的指令。该librsvg-dev
软件包就是其中一种,因此要在命令行上构建简单的程序,所需要做的就是
gcc svg2cairoxml.c `pkg-config --cflags --libs librsvg-2.0`
为了在IDE中实现相同的功能,您有两种选择:您可以运行
pkg-config --cflags librsvg-2.0
和
pkg-config --libs librsvg-2.0
在终端中,然后将结果输出复制到适当的编译器和链接器设置框中,或者按照以下对StackOverflow的类似问题的答案进行操作:如何设置GTK +以在Ubuntu Linux上使用Code :: Blocks开发,将pkg-config
命令替换直接添加到Other options选项卡中如下:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句