Компиляция / ссылка на Каирскую библиотеку - PullRequest
4 голосов
/ 08 декабря 2011

Я пытаюсь протестировать несколько простых программ 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 Ответ

7 голосов
/ 08 декабря 2011

Попробуйте скомпилировать с

 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>
...