我编写了一个makefile,该文件构建了一个附加了x.264标头的C程序。尝试在终端中执行makefile之后,我收到致命错误: “ example.c行[#include的行] x264.h没有这样的文件或目录”。在下面可以找到C代码和makefile(位于同一文件夹中,该库-包含x264.pc文件-在父文件夹的libx264文件夹中)。如果能为您提供帮助,我将不胜感激。
Makefile:
CC = gcc
CFLAGS = -c -Wall `export PKG_CONFIG_PATH=../libx264 && pkg-config --cflags x264`
LDFLAGS = -static `export PKG_CONFIG_PATH=../libx264 && pkg-config --libs --static libx264`
all: Release
Debug: CFLAGS += -g
Debug: example
Release: example
test: example.o
$(CC) -o example example.o $(LDFLAGS)
test.o: example.c
$(CC) $(CFLAGS) example.c -o example.o
clean:
rm -f example.o example
example.c代码
#include <stdio.h>
#include <x264.h>
int main( int argc, char **argv )
{
int width, height;
return 0;
}
答案 0 :(得分:1)
您需要告诉编译器(更准确地说是预处理器)头文件在使用-I
选项的位置:
CFLAGS = -c -Wall -I../libx264
如果我是对的,则需要解压缩该.pc
文件,以使x264.h
确实位于../libx264
中。
链接器标志的相似之处(假设libx264.a
中有一个../libx264
文件),您必须在其中指定库在何处使用-L
选项:
LDFLAGS = -static -L../libx264 -lx264
或者,您当然也可以写:
LDFLAGS = -static ../libx264/libx264.a