Beaglebone Black 和 Qt 上的 ALSA 问题:-lasound 未找到

Posted

技术标签:

【中文标题】Beaglebone Black 和 Qt 上的 ALSA 问题:-lasound 未找到【英文标题】:Issues with ALSA on Beaglebone Black and Qt: -lasound not found 【发布时间】:2015-03-06 15:30:39 【问题描述】:

我有一个 Beaglebone Black,上面装有 debian 7.5

我的主机是 32 位 Ubuntu 14.10 安装。

我正在使用 Qt4.8.6 进行 arm 交叉编译

我正在尝试创建一个使用触摸屏并从键盘读取 MIDI 输入的应用程序。 我使用以下教程 (http://embedded.von-kannen.net/2014/05/21/qt-4-8-6-on-beaglebone-black/) 安装 Qt 嵌入式,因此我可以交叉编译到我的 beaglebone(教程需要一些修复,如果有人需要,我已经准备好一个“修复”文档)

文件已部署到小猎犬,并且它们可以正常工作,但校准屏幕始终需要一些额外的输入。 这一切都很好,直到我的 Qt 项目需要 RtMidi 库来读取和发送 MIDI 信号。 我可以在我的桌面上用 RtMidi 编译所有东西,但是当我尝试为 BBB 构建时,我会收到以下内容:

Cannot find -lasound
collect2: error: ld returned 1 exit status

我怀疑我需要为 arm 构建 ALSA,我试图在此帮助下做到这一点:http://www.omappedia.org/wiki/ALSA_Setup

我花了一些力气,但我想我设法得到了一些东西。唉,当我将我的创作添加到 Qt 时:

DEFINES += __LINUX_ALSA__
LIBS += -L/path/to/folder/containing/asound -lasound

我受到了欢迎:

undefined reference to: '__pol_chk#GLIBC_2.16' in /.../libasound.so file
collect2: error: ld returned 1 exit status

要么我做错了,要么它不再起作用了。

根据我对 arm-none 的理解,我使用 arm-linux-gnueabi-c++/gcc 而不是 arm-none-linux-gnueabi-c++/gcc -linux-gnueabi 东西属于codesourcery 工具链?反正我没有 arm-none-linux-gnueabi 的东西......如果这是我的全部问题,我该如何得到它?

坦率地说,我很迷茫。我什至不知道 arm ALSA 是否是问题所在。 我对 Ubuntu 不是特别熟悉,也不是很舒服,但我别无选择。 Windows 的教程都需要 codesourcery 工具链,该工具链不再免费提供,而 ubuntu 教程的信息量更大,而且很少见…… 我正在做的所有教程似乎都已经过时了。一切都是为旧的 Angstrom 发行版制作的,不再真正有效...... 在这一点上,我完全不知道该怎么做才能让它发挥作用。

我需要帮助。最好有你给 5 岁孩子的指示(步骤和终端输入清楚地拼写出来......)

我不确定我需要提供哪些其他信息,所以如果我遗漏了任何信息,请询问。

如果重要的话,我的编程语言是 C++。 到目前为止,我一直使用 Linaro 工具链,因为它是我遵循的教程中使用的。

【问题讨论】:

【参考方案1】:

我找到了答案。 事实证明,我使用的编译器确实是问题所在。 在我开始接触 arm-none-linux-gnueabi 之后,问题有了一点进展,但当我开始遇到 VFP 寄存器问题时,最终又停止了......

我最终的解决方案是使用我之前使用的 linaro 编译器来编译 Qtembedded。即:arm-linux-gnueabihf-gccarm-linux-gnueabihf-c++

我也部分误解了 alsa 教程中的说明,并将内容编译到错误的路径。

对于任何通过谷歌搜索找到此内容的菜鸟: 如果您被告知编译器工具链无法创建可执行文件,请使用:

$ PATH=/home/<user>/......./linaro-lotsa-version-numbers/bin/:$PATH

(包含大量可执行文件的文件夹,其中包含 arm-linux-gnueabihf 字样)

在执行 CC=/bla/bla/bla 命令之前。

类似地,configure 的 --prefix 选项可能看起来像这样:

/home/<user>/....../linaro-lotsa-version-numbers/arm-linux-gnueabihf/libc/usr

在 Qt 中使用:

LIBS += -L/home/<user>/....../linaro-lotsaversionnumbers/arm-linux-gnueabihf/libc/usr/lib -lasound 

(您正在寻找包含 libasound.so 的文件夹)

也就是说,显然假设您在主文件夹中完成了您的工作,就像我按照上述教程所做的那样。

【讨论】:

以上是关于Beaglebone Black 和 Qt 上的 ALSA 问题:-lasound 未找到的主要内容,如果未能解决你的问题,请参考以下文章

Qt Creator 4.0.2 和 Beaglebone Black 与 Ubuntu 16.04.3

从 beaglebone black 上的文件实时转码 1080p 流的选项

如何从 BeagleBone Black 连接到 USB TTY?

如何使用Debian 8.2图像闪烁BeagleBone Black eMMC?

Beaglebone Black教程Beaglebone Black的引脚分配

Beaglebone 上的 OpenCV 编译错误