无法编译使用librsvg的微型C代码

尤里

在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-2librsvg-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选项卡中如下:

代码::阻止pkg-config --cflags设置

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Pango无法使用librsvg查找字体

来自分类Dev

无法使用g ++用C ++代码编译C库

来自分类Dev

C++ 代码无法编译

来自分类Dev

C代码:for循环使用gcc编译但无法运行

来自分类Dev

无法在Linux上编译C代码

来自分类Dev

无法在NetBeans Windows上编译C代码

来自分类Dev

代码在c ++中无法在g ++中编译

来自分类Dev

使用函数指针的代码无法编译

来自分类Dev

使用函数指针的代码无法编译

来自分类Dev

使用CMake使用CUDA代码编译c ++

来自分类Dev

无法在Linux上使用Sleep()编译C ++代码-要包括哪个库?

来自分类Dev

具有继承关系的C ++ 11代码无法使用clang编译

来自分类Dev

无法使用“&lt;”编译C#代码 和“&gt;” 在里面

来自分类Dev

从C源代码编译的DLL。无法在excel VBA中使用。找不到文件错误

来自分类Dev

更新到macOS Catalina后无法使用C ++代码编译R软件包

来自分类Dev

无法使用“&lt;”编译C#代码 和“&gt;” 在里面

来自分类Dev

无法使用 Visual Studio Code 中的 g++ 编译 SFML C++ 代码

来自分类Dev

断言代码无法编译

来自分类Dev

无法编译mysql代码

来自分类Dev

无法编译mysql代码

来自分类Dev

Haskell代码无法编译

来自分类Dev

Erlang代码无法编译?

来自分类Dev

无法编译OpenGL代码

来自分类Dev

使用'asm'指令编译C源代码

来自分类Dev

使用__float128编译C ++代码

来自分类Dev

使用shellscript编译我的源代码(C)

来自分类Dev

使用Magick ++和openMPI编译C ++代码

来自分类Dev

使用多个编译器编译C代码

来自分类Dev

为什么在C ++ 4.8.2中无法编译此C ++代码