Как исправить «фатальную ошибку: x.264 нет такого файла или каталога»

#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 для получения дополнительной информации.