Gnatmake 未定义参考(libcairo)

Gnatmake undefined reference (libcairo)

如果我尝试编译 GNAT Programming Studio 6.1.0w 的 GtkAda 最小示例,我会得到以下结果:

...

gnatlink /home/myuser/own projects/ada/obj/main.ali -shared-libgcc -g -g -L/usr/lib/x86_64-linux-gnu/ -lgtkada -lgmodule-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lfontconfig -lfreetype -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lX11 -lm -o /home/gabre/own projects/ada/obj/main
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_filter_create_separable_convolution'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_remove'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_freeze'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_thaw'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_composite_glyphs'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_lookup'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_get_mask_format'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_insert'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_glyph_cache_create'
/usr/lib/x86_64-linux-gnu//libcairo.so: undefined reference to `pixman_composite_glyphs_no_mask'
collect2: ld returned 1 exit status
gnatlink: error when calling /usr/bin/gcc-4.6

GPS执行的指令:

gnatmake -d -P/home/myuser/own projects/ada/AdaTest.gpr -vP2 -j4 -g

如果我从终端尝试使用相同的命令,它也可以在 GPS 5.0 中使用(它与最新的 6.1.0w 执行相同的命令) 是什么原因导致的?我该如何使 GPS 正常工作?

我相信你在 comp.lang.ada 上问过同样的问题。仅作记录,Ludovic Brenta 的回答是:安装 libpixman-1-dev,然后编辑项目文件中的 Linker'Linker_Options 开关,使其包含“-lpixman-1”。

当 运行 来自 GPS 时,链接器可能会看到 gtk+ 附带的库之一的不同版本,这将具有不同的依赖项列表。