【问题标题】:Fail to Link Portaudio Library无法链接 Portaudio 库
【发布时间】:2015-09-14 08:54:12
【问题描述】:

我使用 Portaudio 库制作了一个简单的 Makefile 项目,该项目使用以下 Makefile 运行良好:

CXXFLAGS =  -O2 -g -Wall -fmessage-length=0
OBJS =      RecAudio.o
LIBS = ../Portaudio/portaudio/lib/.libs/libportaudio.a -lpthread -lrt -lasound
#LIBS = -lportaudio -lpthread -lrt -lasound
TARGET =    RecAudio
$(TARGET):  $(OBJS)
    $(CXX) -o $(TARGET) $(OBJS) $(LIBS)
all:    $(TARGET)
clean:
    rm -f $(OBJS) $(TARGET)

我将尝试将 Portaudio 库集成到另一个使用 Automake 工具创建的项目中。我以这种方式在 Makefile.am 文件中添加了库:

METASOURCES = AUTO
lib_LTLIBRARIES = libsounddevice.la
libsounddevice_la_SOURCES = AudioCapturePluginCommon.cpp SoundDevice.cpp SoundDeviceConfig.cpp
libsounddevice_la_LDFLAGS = -module
AM_CPPFLAGS = -D_REENTRANT
libsounddevice_la_LIBADD = portaudio/portaudio/lib/.libs/libportaudio.a -lACE -lxerces-c -llog4cxx -lorkbase -lpcap -lpthread -lrt -lasound
INCLUDES = -I@top_srcdir@ -I../../../orkbasecxx -I../common
AudioCapturePluginCommon.cpp:
    ln -s ../common/AudioCapturePluginCommon.cpp AudioCapturePluginCommon.cpp

但我得到以下错误:

sr/bin/ld: portaudio/portaudio/lib/.libs/libportaudio.a(pa_front.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
portaudio/portaudio/lib/.libs/libportaudio.a: could not read symbols: Bad value

【问题讨论】:

  • 为什么不按照错误消息和recompile with -fPIC标志中的建议进行操作?
  • 程序已经用-fPIC和-DPIC编译。总是有同样的问题 *** 警告:将共享库 libsounddevice.la 与 *** 静态库 /home/daniele/Desktop/Sviluppo/Portaudio/portaudio/lib/.libs/libportaudio.a 链接不可移植!

标签: c++ makefile autotools automake portaudio


【解决方案1】:

不要将“-shared”链接到静态库。

使用共享的“-lportaudio”

另见Why is fPIC absolutely necessary on 64 and not on 32bit platforms?

【讨论】:

  • 我已经使用了“-lportaudio”并且程序编译正确但是当我登录“Pa_GetDeviceCount();”时我有 0 个音频设备,而不是它们应该是 7 个,如使用 libportaudio.a 库编译的其他程序所示。关于这个问题的任何想法?谢谢
【解决方案2】:

我发现了问题,当我安装 Portaudio 时,portaudio 库已包含在 /usr/local/lib 路径中,同时我的项目在 /usr/lib 路径中搜索 Portaudio 库。因此,我已将库从 /usr/local/lib 复制到 /usr/lib 并解决了问题(与 -lportadio 链接)。谢谢

问候 丹尼尔·埃利亚

【讨论】:

    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2017-05-15
    • 2011-08-22
    相关资源
    最近更新 更多