Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 745
user1704042 Avatar asked Nov 06 '25 11:11

user1704042


2 Answers

You need to include the Apple frameworks:

  • CoreServices.framework
  • CoreFoundation.framework
  • AudioUnit.framework
  • AudioToolbox.framework
  • CoreAudio.framework

and as you already did libportaudio.a

like image 149
user4720278 Avatar answered Nov 07 '25 23:11

user4720278


Thanks Kevin ! To gain time for NetBeans users, here is what I did on Mac OS X 10.12 sierra, Netbeans 8.2 with portaudio installed (http://macappstore.org/portaudio/)

  • project must #include "portaudio.h"
  • Right click on project > properties
  • Build>Linker
  • Additional option, Add this :


-v /usr/local/lib/libportaudio.a -framework CoreServices -framework 
CoreFoundation -framework AudioUnit -framework AudioToolbox -framework CoreAudio

And now it works. This is detailed for newbies like me.

like image 35
PiFLYON Avatar answered Nov 08 '25 01:11

PiFLYON



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!