以 SDL 库为例,必须指向其代码开头的标题,如下所示:
#include <SDL/SDL.h>
并且,例如,当使用 GCC 进行编译时,该库必须包含在内:
gcc project.cpp -o project -l/path/to/library/SDL
那么,当您开发包含特定库的程序时,头文件和库应该放在哪里,以便 GCC 能够识别从哪里提取这些信息?它们是否必须存储在 usr 目录中,或者您可以告诉 GCC 指向您想要的任何位置?
这是针对 Ubuntu 上的开发的,因为这是我正在开发的平台,但任何 *nix 平台都可能类似。
答案1
GCC 编译器将根据你声明头的方式来查找头文件,因此有两种可能
使用尖括号 <> 声明标题
#include <math.h>
在这种情况下,编译器将在 Ubuntu 中的默认系统头文件位置中进行搜索
/usr/local/include
/usr/target/include
/usr/include
因此,如果您所需的库在其中一个位置有它的头文件,GCC 应该会默认找到它。
使用“ ”声明标题
#include "myheader.h"
或者
#include "myheaders/header.h"
在这种情况下,编译器将查找与 .c 文件相同的目录,除非你使用选项告诉 gcc 查找其他-Idir
地方
更多信息可以参阅这篇文章gribblelab.org 上的编译、链接、Makefile、头文件