编译/链接Cairo库

4
我正在尝试测试一些简单的Cairo程序,但我无法弄清楚如何包含源文件。我已经安装了Cairo库——问题只是如何让gcc知道……

  • 我已经将.h文件(包括cairo.h)安装在/usr/local/include/cairo中
  • 我已经将.dylib文件安装在/usr/local/lib和/usr/local/lib/cairo中

还有其他安装组件需要注意吗?(我只需使用“make install”安装库)

我尝试这样编译:

$ gcc cairoTest.c -I/usr/local/include/cairo -L/usr/local/lib/

我的cairoTest.c文件开头是这样的:

include <cairo.h>

gcc正在寻找cairo.h文件,但是它会给出以下错误信息。我认为它没有正确链接到.dylib文件,但我不确定。我还是编译/链接的新手。

gcc cairoTest.c -I/usr/local/include/cairo -L/usr/local/lib/cairo
Undefined symbols for architecture x86_64:
  "_cairo_image_surface_create", referenced from:
      _main in ccVd9Pet.o
  "_cairo_create", referenced from:
      _main in ccVd9Pet.o
  "_cairo_scale", referenced from:
      _main in ccVd9Pet.o
  "_cairo_set_line_width", referenced from:
      _main in ccVd9Pet.o
  "_cairo_set_source_rgb", referenced from:
      _main in ccVd9Pet.o
  "_cairo_rectangle", referenced from:
      _main in ccVd9Pet.o
  "_cairo_stroke", referenced from:
      _main in ccVd9Pet.o
  "_cairo_surface_write_to_png", referenced from:
      _main in ccVd9Pet.o
  "_cairo_destroy", referenced from:
      _main in ccVd9Pet.o
  "_cairo_surface_destroy", referenced from:
      _main in ccVd9Pet.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [all] Error 1

为了在编译中包含Cairo库,我应该做哪些不同的事情?

谢谢。

1个回答

9

尝试使用以下命令进行编译:

 gcc -Wall -g cairoTest.c -I/usr/local/include/cairo -L/usr/local/lib/ -lcairo -o cairoTest

(但是您可能需要其他库,例如通过$(pkg-config --cflags --libs cairo)或类似方式)

您的文件应该以以下内容开头:

 #include  <cairo.h>

谢谢!我的一个朋友解释了pkg-config给我。这有所帮助,所以我找到了正确的标志,现在正在成功编译。另外,我忘记在我的问题中加上#,但是我在我的文件中有它。我试图为你的评论点“赞”,但是它说我需要更高的声誉。 - user1005954
-lcairo 是我所缺少的。 - Charles L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接