trying portaudio example, but getting "ld: symbol(s) not found for architecture x86_64"

audio, c, linker, macos, portaudio

Solution

You need to include the Apple frameworks:

- CoreServices.framework

- CoreFoundation.framework

- AudioUnit.framework

- AudioToolbox.framework

- CoreAudio.framework

and as you already did libportaudio.a

Problem

I'm trying to use portaudio on Mac OS 10.10, but I'm getting an error when attempting to compile an example program. Here's what I've done: -./configure && make. No problems. -copied the example file "pa_devs.c", libportaudio.a, and portaudio.h into a separate directory called Test1 -tried to compile it ``` gcc -o Test1 pa_devs.c libportaudio.a -lm ``` -got this error: ``` Undefined symbols for architecture x86_64: "_AudioConvertHostTimeToNanos", referenced from: _GetStreamTime in libportaudio.a(pa_mac_core.o) _AudioIOProc in libportaudio.a(pa_mac_core.o) "_AudioConverterDispose", referenced from: _CloseStream in libportaudio.a(pa_mac_core.o) "_AudioConverterFillBuffer", referenced from: _AudioIOProc in libportaudio.a(pa_mac_core.o) "_AudioConverterNew", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_AudioConverterReset", referenced from: _StartStream in libportaudio.a(pa_mac_core.o) "_AudioConverterSetProperty", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_AudioDeviceAddPropertyListener", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) _SetupDevicePropertyListeners in libportaudio.a(pa_mac_core.o) _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o) "_AudioDeviceGetProperty", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) _PaMacCore_GetBufferSizeRange in libportaudio.a(pa_mac_core.o) _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) _OpenStream in libportaudio.a(pa_mac_core.o) _AudioDevicePropertyActualSampleRateListenerProc in libportaudio.a(pa_mac_core.o) _AudioDevicePropertyGenericListenerProc in libportaudio.a(pa_mac_core.o) _CalculateFixedDeviceLatency in libportaudio.a(pa_mac_core.o) ... "_AudioDeviceGetPropertyInfo", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) _GetChannelInfo in libportaudio.a(pa_mac_core.o) _setBestSampleRateForDevice in libportaudio.a(pa_mac_core_utilities.o) "_AudioDeviceRemovePropertyListener", referenced from: _CloseStream in libportaudio.a(pa_mac_core.o) _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o) "_AudioDeviceSetProperty", referenced from: _AudioDeviceSetPropertyNowAndWaitForChange in libportaudio.a(pa_mac_core_utilities.o) _setBestFramesPerBuffer in libportaudio.a(pa_mac_core_utilities.o) (maybe you meant: _AudioDeviceSetPropertyNowAndWaitForChange) "_AudioGetCurrentHostTime", referenced from: _GetStreamTime in libportaudio.a(pa_mac_core.o) _AudioIOProc in libportaudio.a(pa_mac_core.o) "_AudioHardwareGetProperty", referenced from: _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) "_AudioHardwareGetPropertyInfo", referenced from: _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) "_AudioObjectSetPropertyData", referenced from: _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) "_AudioOutputUnitStart", referenced from: _StartStream in libportaudio.a(pa_mac_core.o) "_AudioOutputUnitStop", referenced from: _StopStream in libportaudio.a(pa_mac_core.o) _AudioIOProc in libportaudio.a(pa_mac_core.o) "_AudioStreamGetProperty", referenced from: _CalculateFixedDeviceLatency in libportaudio.a(pa_mac_core.o) "_AudioUnitAddPropertyListener", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_AudioUnitGetProperty", referenced from: _StopStream in libportaudio.a(pa_mac_core.o) _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) _startStopCallback in libportaudio.a(pa_mac_core.o) "_AudioUnitInitialize", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_AudioUnitRender", referenced from: _AudioIOProc in libportaudio.a(pa_mac_core.o) "_AudioUnitReset", referenced from: _StopStream in libportaudio.a(pa_mac_core.o) "_AudioUnitSetProperty", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_AudioUnitUninitialize", referenced from: _CloseStream in libportaudio.a(pa_mac_core.o) "_CFRelease", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) "_CFStringCreateWithFormat", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) "_CFStringGetCString", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) "_CFStringGetLength", referenced from: _PaMacCore_GetChannelName in libportaudio.a(pa_mac_core.o) "_CloseComponent", referenced from: _CloseStream in libportaudio.a(pa_mac_core.o) _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_FindNextComponent", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "_Gestalt", referenced from: _PaMacCore_Initialize in libportaudio.a(pa_mac_core.o) "_OpenAComponent", referenced from: _OpenAndSetupOneAudioUnit in libportaudio.a(pa_mac_core.o) "___CFConstantStringClassReference", referenced from: CFString in libportaudio.a(pa_mac_core.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` I get the impression that I'm not linking things correctly. Any advice?

Original source