#c #makefile #x264 #libx264
#c #makefile #x264 #libx264
Вопрос:
Я написал makefile, который создает программу на C, прикрепляя заголовок x.264. После попытки выполнить makefile в терминале я получаю неустранимую ошибку: «строка example.c [строка #include ] x264.h нет такого файла или каталога». Ниже вы можете найти код C и makefile (расположенный в той же папке, библиотека, содержащая файл x264.pc, находится в папке libx264 родительской папки). Я был бы очень признателен, если бы вы могли помочь с привязкой.
Makefile:
CC = gcc
CFLAGS = -c -Wall `export PKG_CONFIG_PATH=../libx264 amp;amp; pkg-config --cflags x264`
LDFLAGS = -static `export PKG_CONFIG_PATH=../libx264 amp;amp; 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
пример.c-код
#include <stdio.h>
#include <x264.h>
int main( int argc, char **argv )
{
int width, height;
return 0;
}
Комментарии:
1. Установите
libx264-dev
в Ubuntu или Debian.2. Привет. Задача или вызов состоит в том, чтобы заставить makefile работать. Спасибо, если я не справлюсь с этим, я установлю библиотеку.
3. Makefile работает просто отлично. Дело в том, что у вас не установлены файлы заголовков для библиотеки.
Ответ №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
Комментарии:
1. Спасибо! Произошла одна ошибка: пакет a был libx264.a, а не x.264.a. Добавление -I
export PKG_CONFIG_PATH= -I ../libx264 amp;amp; pkg-config --cflags x264
не работает. Я получаю сообщение об ошибке: /bin/sh: 1 экспорт: -I : неверное имя переменной. Если я удалю -I, я получу ту же ошибку для следующего слова: /bin /sh: 1 export: ../libx264 : неверное имя переменной. Что точно, так это то, что родительская папка содержит папки libx264 и example. libx264 содержит множество файлов, включая: x264.c, x264.h, x265.pc и libx264.a. Папка example содержит файл example.c и makefile, который не работает.2. Это необходимо включить в Makefile. RTFM для получения дополнительной информации.