2011-12-07 105 views
4

我想測試一些簡單的開羅程序,但我無法確定如何包含源文件。我已經安裝了開羅庫 - 它只是一個如何讓GCC知道的問題...編譯/鏈接到開羅圖書館

  • 我有.h文件(包括cairo.h)安裝在/ usr /本地/包括/開羅
  • 我已經安裝在/ usr/local/lib目錄中名爲.dylib文件和/ usr/local/lib目錄/開羅

是否有安裝我應該知道的任何其他成分? (我只是沒 '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庫包含在我的彙編中?

感謝,

回答

6

嘗試與編譯

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> 
+0

謝謝!我的一位朋友向我解釋了pkg-config。這有幫助,所以我想出了正確的標誌,現在我正在編譯成功。另外,我在我的問題中忘記了#,但是我在我的文件中有這個。 我試圖給你的評論一個「up」,但它說我需要更高的聲譽。 – user1005954

+0

-lcairo是我失蹤 –