Как скомпилировать пользовательский модуль PulseAudio? - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь написать модуль PulseAudio. Для начала я написал следующий минимальный код для модуля, упомянутый в этой документации.

#include <pulsecore/module.h>
int pa__init(pa_module *m)
{
    return 0;
}

Я попытался скомпилировать его с помощью этой команды:

gcc -g -shared -o module-test.so module-test.c

Но выдает ошибку:

 pulsecore/module.h: No such file or directory
 #include <pulsecore/module.h>
          ^~~~~~~~~~~~~~~~~~~~
 compilation terminated.

После поиска в интернете я обнаружил, что мне нужно установить libpulse-dev, но я уже установил pulseaudio и libpulse-dev, как вы можете видеть ниже.

jyotesh@jyotesh-VM:~$ sudo apt install pulseaudio libpulse-dev
[sudo] password for jyotesh: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libpulse-dev is already the newest version (1:11.1-1ubuntu7.2).
pulseaudio is already the newest version (1:11.1-1ubuntu7.2).
0 upgraded, 0 newly installed, 0 to remove and 10 not upgraded.

Я попытался найти файл заголовка, используя locate, find, apt-file и т. Д. Я не могу найти этот файл заголовка.

Кто-нибудь знает, как скомпилировать модуль PulseAudio?

1 Ответ

0 голосов
/ 08 марта 2019

Мне удалось скомпилировать код и создать файл module-test.so, выполнив шаги из здесь и здесь . Я повторю шаги здесь:

Сначала я собрал и установил PulseAudio v12.2 из исходного кода.

# Clone PulseAudio git repository
git clone https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git

# I wanted 12.2 version of PulseAudio, so I checked out that version
cd pulseaudio
git checkout tags/v12.2

# Install the dependencies
sudo apt-get -y build-dep pulseaudio

# Build PulseAudio source code
./bootstrap.sh
make

# Install and configure dynamic linker run-time bindings (so that
# ld can find the libraries that you specify while building your module)
sudo make install
sudo ldconfig

После этого я написал минимальный код для модуля.

#include <config.h> // this is required, otherwise you will get compilation errors
#include <pulsecore/module.h>
int pa__init(pa_module *m)
{
    return 0;
}

Для компиляции я использовал команду

gcc -g -shared -fPIC -I/home/jyotesh/pulseaudio -I/home/jyotesh/pulseaudio/src -L/home/jyotesh/pulseaudio/.libs -L/usr/local/lib/pulseaudio -o module-test.so module-test.c -lpulsecore-12.2 -lpulsecommon-12.2 -lpulse
...