无法编译 rtmidi 测试 cmidiin.cpp 文件,非法指令

Posted

技术标签:

【中文标题】无法编译 rtmidi 测试 cmidiin.cpp 文件,非法指令【英文标题】:Can't compile rtmidi test cmidiin.cpp file, Illegal instruction 【发布时间】:2020-11-04 17:56:44 【问题描述】:

我在 Orange Pi 板上使用 Armbian。我尝试从 rtmidi lib 的测试文件夹中编译 cmidiin.cpp。编译没有错误消息。但是当我运行它时,它会告诉我:

g++ cmidiin.cpp -o t6 -g -lpthread -lasound  -lrtmidi
./t6
Opening f_midi:f_midi 20:0
Illegal instruction

但是!当我使用 rtmidi 的 make 命令编译它时,它工作正常。 编译时似乎没有使用某些参数或键。有什么想法可以解决吗?或者我如何获取信息,哪些参数使用“make”文件?因为现在我运行它时,我只能看到两行:

CXX      cmidiin.o
CXXLD    cmidiin

rtmidi site

【问题讨论】:

您是否要求有人下载 make 文件,为您解释它并告诉您在没有 make 的情况下构建的命令行?似乎这与提供的 makefile 的想法......和 ​​*** 的想法相矛盾。 尝试运行make V=1 以显示完整的编译器调用;除非请求,否则配置脚本似乎使用常见的AM_SILENT_RULES 模块隐藏编译输出。 > 您是否要求有人下载 make 文件,为您解释它并告诉您在没有 make 的情况下构建的命令行?当然不是,@Yunnosch。似乎“make V=1”的建议会对我有所帮助。谢谢你,@Botje! 【参考方案1】:

好的,现在测试文件可以用这个命令正常工作:

g++ -Wall cmidiin.cpp -o t7 /usr/local/lib/librtmidi.so

很奇怪,它不能与 -lrtmidi 键一起使用,并且当我指出库的完整路径时可以工作。

【讨论】:

您的-lrtmidi 是否有可能在某个地方接另一个rtmidi.so?您可以通过ldd t6 查询。 (除非它当然选择了一个静态库......)

以上是关于无法编译 rtmidi 测试 cmidiin.cpp 文件,非法指令的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上正确编译 RtMidi API

如何明智地分配静态 RtMidi 回调对象?

使用 RtMIDI,MIDISendSysex 不向虚拟端口发送事件

从回调中发出信号

Kotlin Mock Spring 启动测试无法编译

无法编译 TestNG 测试套件(Maven+Surefire)