![编译器找不到头文件,是否将目录添加到PATH?](https://linux22.com/image/34975/%E7%BC%96%E8%AF%91%E5%99%A8%E6%89%BE%E4%B8%8D%E5%88%B0%E5%A4%B4%E6%96%87%E4%BB%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E5%B0%86%E7%9B%AE%E5%BD%95%E6%B7%BB%E5%8A%A0%E5%88%B0PATH%EF%BC%9F.png)
我正在尝试使用位于的 gtk /usr/include/gtk-3.0/gtk/ ..
,但所有的头文件在该工具包有#include <gtk/gtk.h>
.
除了添加/usr/local/gtk-3.0
或PATH
添加到gtk-3.0
所有包含预处理器之外,还有哪些其他选项?
答案1
在这种情况下,将适当的目录添加到包含路径正是您应该做的,只是您应该通过pkg-config
.不支持使用完整路径名直接访问文件。
将这样的内容添加到您的Makefile
:
CFLAGS += `pkg-config --cflags gtk+-3.0`
LIBS += `pkg-config --libs gtk+-3.0`
这将自动为当前系统添加正确的编译器和链接器选项。
答案2
环境PATH
变量是可执行文件的搜索路径,而不是其他类型文件的搜索路径。对于包含文件,您需要安排将选项传递-I/usr/include/gtk-3.0/gtk
给编译器。通常,您可以通过设置由 makefile 定义的变量(通常为CFLAGS='-I/usr/include/gtk-3.0/gtk'
)或将参数传递给./configure
(通常为./configure --includedir=/usr/include/gtk-3.0/gtk
)来完成此操作。
对于遵循 Freedesktop 实践的 Gtk 和其他软件,指示包含文件以及其他编译器和链接器选项的位置的正确方法是pkg 配置,正如 Celada 的回答中所描述的。