Связать исходный код libsndfile с gcc

Я только что клонировал libsndfile и создал файл program.c со следующим содержимым:

#include <stdio.h>
#include <sndfile.h>
main() {
    printf("hello world");
}

Моя цель - заставить этот файл скомпилироваться с помощью gcc (если действительно sndfile.h является правильным заголовком для включения), однако я не компетентен ни в коде C, ни в компиляторе gcc.

До сих пор я ссылался на документы gcc и Часто задаваемые вопросы о libsndfile и не смогли найти решение. Я не уверен, есть ли у меня вообще "библиотека" для передачи опции gcc -l. Нужно ли мне сначала пройти какой-то процесс сборки с исходным кодом libsndfile или я могу «связать» с файлами .c?

До сих пор с program.c и каталогом клонирования libsndfile в одном каталоге я пробовал следующее:

gcc 'pkg-config --cflags libsndfile' program.c -o hello
gcc 'pkg-config --cflags ./libsndfile/sndfile.pc.in' program.c -o hello

Я программирую на своей модели raspberry pi B и не устанавливал libsndfile, поэтому на моем пути ничего нет... может быть, мне следует переименовать sndfile.pc.in в sndfile.pc и как-то поместить его на свой путь? (тоже не гуру Linux!)

Если есть какие-то ресурсы, которые, по вашему мнению, мне следует изучить, пожалуйста, прокомментируйте! Я вполне готов принять ответы, которые просто подтолкнут меня достаточно, чтобы понять вещи. Любая помощь приветствуется.


person gordlonious    schedule 28.05.2018    source источник
comment
Есть ли пакет libsndfile-dev или libsndfile1-dev для вашей ОС? Использовать его может быть проще, чем компилировать его самостоятельно, если только вам не нужна его конкретная версия. Этот пакет должен содержать файл pkg-config sndfile.pc с правильными настройками, которые вы могли бы использовать.   -  person Karsten Koop    schedule 28.05.2018
comment
Есть инструкции по настройке среды сборки для debian, которые включают sudo apt install autoconf autogen automake build-essential libasound2-dev \ libflac-dev libogg-dev libtool libvorbis-dev pkg-config python, которые мне, вероятно, следует попробовать.   -  person gordlonious    schedule 28.05.2018
comment
Похоже, мне нужно узнать немного больше о системе сборки GNU.   -  person gordlonious    schedule 28.05.2018


Ответы (1)


Сначала убедитесь, что у вас установлен gcc:

sudo apt-get install gcc

Затем установите libsndfile1-dev:

sudo apt-get install libsndfile1-dev

Я немного исправил ваш код, чтобы избежать некоторых предупреждений:

#include <stdio.h>
#include <sndfile.h>

int main(void) {
  printf("hello world\n");
  return 0;
}

Теперь вы можете скомпилировать:

gcc -o hello program.c

Исполнение:

bebs@rasp:~$ ./hello                                     
hello world                                                                              
bebs@rasp:~$      
person alpereira7    schedule 15.03.2021