我遇到了libasound.so正常工作的问题;取决于我如何链接它。
我有一个简单的main.cpp,它实例化一个在单独的.so中定义的类,并在其上调用一个方法。该方法调用各种libasound.so函数。
如果我在可执行级别执行链接;也就是说,将main.o链接到myclass.so和libasound.so;调用libasound例程不起作用。
如果我在库级别链接,那么它可以工作; IE,如果我将myclass.so链接到libasound.so,然后将main.o链接到myclass.so和libasound.so;那就行了。
在这两种情况下,链接步骤都成功完成;解决了所有符号。通过“工作”,我的意思是对snd_pcm_foo *的调用工作。如果它不起作用,我在设置hw_rate和hw_period时遇到问题;得到EINVAL。我试过打开调试。在我看来,在试图为有问题的参数设置的值中存在垃圾。几乎就像是存在初始化或数据对齐问题。
这是在ARM处理器上运行的。