Не могу скомпилировать код libsndfile в Ubuntu - PullRequest
2 голосов
/ 26 апреля 2020

Это мой первый пост. Мне нужно манипулировать aud ios для моего проекта, поэтому я решил использовать libsnfile. Я уже установил его, но когда я пытаюсь скомпилировать любую. c программу с gcc somefile.c или gcc `pkg-config sndfile` somefile.c, она выдает «неопределенную» ошибку

/tmp/ccGTKZdy.o: En la función `convert_to_text': sndfile-to-text.c:(.text+0x193): referencia a `sf_readf_float' sin definir /tmp/ccGTKZdy.o: En la función `main': sndfile-to-text.c:(.text+0x37a): referencia a `sf_open' sin definir sndfile-to-text.c:(.text+0x3a7): referencia a `sf_strerror' sin definir sndfile-to-text.c:(.text+0x3e1): referencia a `sf_strerror' sin definir sndfile-to-text.c:(.text+0x45f): referencia a `sf_close' sin definir

Any «sf_. .. "функция не определена. Я читал, что мне может понадобиться ссылка на библиотеку, но не знаю, как. Помощь.

1 Ответ

1 голос
/ 26 апреля 2020

Звонить просто pkg-config sndfile недостаточно. Это должно быть:

gcc somefile.c "$(pkg-config --libs --cflags sndfile)" 

И $() рекомендуется использовать вместо обратных галочек в подстановке команд в эти дни: https://github.com/koalaman/shellcheck/wiki/SC2006.

Также помните о включении заголовка libsndfile в Ваша программа:

#include <sndfile.h>

и добавьте опцию -Wall -Wextra -pedantic, чтобы компилятор сообщал обо всех видах предупреждений - исправляйте код до тех пор, пока нет предупреждений:

gcc -Wall -Wextra -pedantic somefile.c "$(pkg-config --libs --cflags sndfile)" 
...