项目地址: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 条评论