R S*_*R S 7 c c++ libraries cairo
我已经使用 安装了 cairo-1.4.14 make install,但是在尝试编译我的代码之后:
fatal error: cairo.h: No such file or directory
#include <cairo.h>
^
Run Code Online (Sandbox Code Playgroud)
我用这个编译:
g++ screenshot.cpp
Run Code Online (Sandbox Code Playgroud)
我从这个输出安装了 3 个包,但仍然是同样的问题:
apt-file search --regex /cairo.h$
libcairo2-dev: /usr/include/cairo/cairo.h
r-cran-rgtk2: /usr/lib/R/site-library/RGtk2/include/RGtk2/cairo.h
thunderbird-dev: /usr/include/thunderbird/cairo/cairo.h
Run Code Online (Sandbox Code Playgroud)
系统信息:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.3 LTS
Release: 14.04
Codename: trusty
Run Code Online (Sandbox Code Playgroud)
的输出pkg-config --libs --cflags cairo:
-I/usr/local/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -L/usr/local/lib -lcairo
Run Code Online (Sandbox Code Playgroud)
apt-file search 给出信息
$ apt-file search --regex /cairo.h$
libcairo2-dev: /usr/include/cairo/cairo.h
Run Code Online (Sandbox Code Playgroud)
因为那个执行
sudo apt install libcairo2-dev
Run Code Online (Sandbox Code Playgroud)
并编译
g++ screenshot.cpp $(pkg-config --libs --cflags cairo)
Run Code Online (Sandbox Code Playgroud)
除非您需要与 Ubuntu 提供的不同的 Cairo 版本,否则请遵循 AB 的回答。
如果要使用手动安装的Cairo,请执行以下操作。
问题是,libcairo安装其cairo.h到/usr/local/include/cairo/而不是/usr/local/include/(即一个目录深)
您必须使用-I开关将此目录传递给编译器。
g++ -I/usr/local/include/cairo/ -o screenshot screenshot.cpp
Run Code Online (Sandbox Code Playgroud)
然后您可能会遇到链接器错误——链接器不知道搜索 libcairo 和未解析符号上的错误。因此,让我们提供g++更多参数。
g++ -I/usr/local/include/cairo/ -L/usr/local/lib -o screenshot screenshot.cpp -lcairo
Run Code Online (Sandbox Code Playgroud)
-lcairo告诉链接器搜索一个被调用的库,cairo并-L/usr/local/lib为链接器提供一个额外的目录来搜索。
需要注意的是参数顺序事项与-l-它应该放在源或目标文件后。[1](在这种情况下,之后screenshot.cpp)
这应该足以编译您的二进制文件。
pkg-config是自动化这些事情的工具。它为您提供使用特定库编译程序所需的命令行参数。我认为它经常超出并最终链接到实际不需要的多个库。在这方面,手动方式更好。
[1] 或者我认为是这样。老实说,我无法理解 GCC 的手册页想说什么。
| 归档时间: |
|
| 查看次数: |
14422 次 |
| 最近记录: |