使用gcc,我无法获得第三方库,Cairo,链接/编译

时间:2013-11-15 02:48:18

标签: c gcc compiler-errors linker-errors codeblocks

显示的错误是未定义的符号,而不是我从示例中复制的Cairo函数,但我猜是内部函数。我已经环顾四周并尝试使用$(pkg-config --cflags --libs cairo),逐字使用终端的常见在线示例。

我在使用EXPORT =(我的cairos .ps文件路径)之后试过了。

我目前在链接器设置中的CodeBlocks'链接库'中有一个选项: /usr/lib/x86-linux-gnu/libcairo.a

另外,我的编译器选项中有/usr/include/cairo

错误:

/usr/lib/x86_64-linux-gnu/libcairo.a(cairo-image-source.o)||In function _cairo_image_source_finish':| (.text+0x1c)||undefined reference topixman_image_unref'|

另外还有50个喜欢它。

由以下内容生成:main.c:

_cairo_image_source_finish':|
(.text+0x1c)||undefined reference to

任何帮助修复和理解正在发生的事情将不胜感激。 感谢。

5 个答案:

答案 0 :(得分:2)

所以这个问题的解决方案如下:

将pkg-config用于所有正确的包含。通过添加以下内容自动执行:

pkg-config --cflags --libs cairo(在代字键上用“`”包围。)

到编译器设置中的“其他选项”选项卡。

我使用链接“其他选项”选项卡执行相同的操作:

pkg-config --libs cairo(也被“`”,重音坟墓所包围)

现在我构建并编译没有错误,但是当我运行它时,除了一个空的控制台窗口我什么也看不见:/

答案 1 :(得分:1)

当您使用png表面时,还需要在pkconfig行中包含“cairo-png”。试试

  

$(pkg-config --cflags --libs cairo cairo-png)

有关cairo相关pkg-config选项的完整列表,请查看/ usr / lib / pkgconfig。

祝你好运。

阿尔文

答案 2 :(得分:1)

这显然意味着链接器无法找到链接所需的所有引用。具体来说,您的cairo库函数依赖于pixman_image_unref,它位于不同的库中,并且链接器无法找到此库。您需要包含pixman库或pixman_image_unref可用的任何其他库。

答案 3 :(得分:0)

只需使用-lpixman-1。 当你在末尾给出-L / _path_to_lib / add -lpixman-1时,即

-L/_path_to_lib/ -lpixman-1

答案 4 :(得分:0)

我遇到了同样的问题,我在没有pkg-config的情况下解决了这个问题,只是链接到/ usr / lib下的libcairo.so。

g++ -L/usr/lib -lcairo hello.o -o hello

我第一次尝试使用eclipse luna但是没有工作,所以我使用自定义makefile从终端运行它:

CC=g++
CFLAGS=-c -Wall -I/usr/include/cairo
LDFLAGS=-L/usr/lib -lcairo
SOURCES=hello.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.c.o:
    $(CC) $(CFLAGS) $< -o $@

希望它有所帮助。

欢呼声