2015-10-06 3 views
4

(Я нахожусь на Ubuntu) Я пытаюсь запустить примеры PortAudio, но получаю много ошибок (см. Ниже). Я поместил файл заголовка portaudio.h в каталог программы. Я понятия не имею об этом. Я думаю, что это ошибка компоновщика. Пожалуйста помоги!Ошибка при компиляции примеров PortAudio

/tmp/cc5EbTlT.o: В функции main': paex_record.c:(.text+0x37e): undefined reference to Pa_Initialize ' paex_record.c :(текст + 0x397): не определено ссылка на Pa_GetDefaultInputDevice' paex_record.c:(.text+0x3de): undefined reference to Pa_GetDeviceInfo' paex_record.c :(текст + 0x436): не определено. Ссылка на Pa_OpenStream' paex_record.c:(.text+0x45a): undefined reference to Pa_StartStream ' paex_record.c :(текст + 0x493):. неопределенная ссылка на Pa_Sleep' paex_record.c:(.text+0x4c2): undefined reference to Pa_IsStreamActive' paex_record.c :(текст + 0x4eb):.. неопределенная ссылку на Pa_CloseStream' paex_record.c:(.text+0x5fa): undefined reference to Pa_GetDefaultOutputDevice» paex_record.c :(текст + 0x641): undefined ссылка на Pa_GetDeviceInfo' paex_record.c:(.text+0x6b2): undefined reference to Pa_OpenStream ' paex_record.c :(текст + 0x6e3): неопределенная ссылка на Pa_StartStream' paex_record.c:(.text+0x71c): undefined reference to Pa_Sleep' paex_record.c :(текст + 0x728):. Неопределенная ссылка на Pa_IsStreamActive' paex_record.c:(.text+0x74e): undefined reference to Pa_CloseStream. paex_record.c :(текст + 0x77d): неопределенная ссылка на Pa_Terminate' paex_record.c:(.text+0x7e5): undefined reference to Pa_GetErrorText ' collect2: ошибка: л.д. возвращается статус 1 выхода

+1

Да, это ошибки компоновщика. Как вы ссылаетесь на компоновщик? –

+0

Я понятия не имею, пожалуйста, помогите. – Dax

+0

Я попытался дать некоторые подсказки в ответе. Если это не поможет, сообщите нам, как вы используете компилятор/компоновщик. Я имею в виду, из оболочки (какая команда?) Или из среды IDE (которая?) Или ...? –

ответ

1

Предполагая, что вы компиляции с помощью GCC и у вас есть один файл C foo.c, команда компилятор будет

gcc -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio 

в -l параметры есть, чтобы связать необходимые библиотеки для вашей программы, например, -lrt свяжется librt.a. Приказ имеет значение.

Я получил необходимые библиотеки отсюда: http://www.portaudio.com/docs/v19-doxydocs/compile_linux.html#comp_linux3. Не знаю, правильны ли они. По крайней мере, вам нужно -lportaudio, очевидно.

Если библиотеки не найдены, вы должны указать gcc путь, например.

gcc -L/usr/lib -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio 

Что касается заголовка, на самом деле его не нужно копировать в каталог вашей программы. Вы бы скорее включить его в качестве

#include <portaudio.h> 

и добавить свой каталог в пути поиска:

gcc -I/usr/include -L/usr/lib -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio 

Конечно, все это лучше сделать в Makefile.

+0

Он работал отлично отлично, но после переустановки portaudio, всякий раз, когда я запускаю любую программу, она дает эту ошибку -/usr/bin/ld: не удается найти -lportaudio collect2: error: ld возвращен 1 статус выхода Пожалуйста, помогите. – Dax

+0

Вы должны найти, где расположены 'libportaudio.a' или' libportaudio.so', и сообщить компоновщику путь с помощью '-L/path/to/lib/file/directory'. Это должно быть что-то вроде '/ usr/lib/i386-linux-gnu'. –