项目地址:https://github.com/alsa-project/alsa-lib

相关教程:https://www.ebaina.com/articles/140000002683
https://blog.csdn.net/sinat_35706094/article/details/88527475

alsa分很多模块,如alsa-lib、alsa-utils等。

一、alsa-lib交叉编译

configure参数

需要按照autotool的流程正确生成configure文件
https://blog.csdn.net/m0_37599645/article/details/116021781

  • --with-configdir
./configure --host=aarch64-linux CC=aarch64-linux-gnu-gcc-8 CXX=aarch-linux-gnu-g++-8 --prefix=$(pwd)/build-arm  --enable-shared=no --enable-static=yes --with-configdir=/etc/v4l2rtspserver/share  --with-alsa-inc-prefix=/etc/v4l2rtspserver/include --with-alsa-prefix=/etc/v4l2rtspserver/lib --disable-alsamixer --disable-xmlto

对于我的项目只要配置--with-configdir参数即可。

./configure --host=aarch64-linux CC=aarch64-linux-gnu-gcc CXX=aarch-linux-gnu-g++ --enable-shared=no --enable-static=yes --with-configdir=/etc/rtmpserver/alsa-lib-1.2.3.2/build/share/alsa

编译后的目录

./configure 执行完,依次执行make clean,make,make install命令,生成build-arm如下:

需要拷贝到目标机的配置文件

  • 编译后需要将alsa.conf及其父文件夹拷贝至目标机,alsa的目录必须与--with-configdir指定的目录匹配上。
  • 如果目标机中/etc/alsa/conf.d目录下某个.conf文件找不到,可以到编译机里对应目标尝试找到这个文件。
  • 如果目标机程序运行时报共享库找不到,可以把目标机中/usr/lib/aarch64-linux-gnu/alsa-lib目录下的so文件拷贝至/usr/lib目录下,但是有没有可能在alsa编译时就指定共享库的路径呢?

二、alsa-utils编译(ubuntu x86)

常见问题

  • checking for libasound headers version >= 1.0.27... not present.configure: error: Sufficiently new version of libasound not found.
    https://blog.51cto.com/u_15127527/4122418
    因为我们的alsa-lib库并没有安装到系统目录中,需要加上CFLAGS和LDFLAGS两个选项:
    ./configure CFLAGS="-I$HOME/alsa-lib/include" LDFLAGS="-L$HOME/alsa-lib/lib/"

  • error:parameter name omitted
    主要是这个项目很多函数参数只有形参,没有实参导致。

    通过 ./configure CC="/usr/bin/g++"强制使用g++编译,但是会出现一些新的错误
    1)invalid conversion from void* to char*
    通过添加CXXFLAGS = -fpermissive可解决此问题,但是又会出现其它问题。


0 条评论

发表回复

您的电子邮箱地址不会被公开。