您尚未登录。

楼主 #1 2017-11-06 10:40:57

cityf
会员
注册时间: 2017-11-03
已发帖子: 195
积分: 195

小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyalsa.git

相关问题: 请问全志V3s使用荔枝派最新的 linux 4.13-y 分支,如何支持声卡?

离线

#2 2017-11-06 11:32:53

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

1. git clone https://github.com/tinyalsa/tinyalsa.git

2. 把所有Makefile的 CC行都改成这样:  CC = $(CROSS_COMPILE)gcc

3. 执行 CROSS_COMPILE=arm-linux- make





离线

#3 2017-11-06 11:36:17

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static





离线

#4 2018-02-03 09:43:07

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

晕哥,上面几行代码是在Makefile上面加吗,要在那个位置加呢
下面是utils下的Makefile文件

DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/man

CROSS_COMPILE ?=
CC = $(CROSS_COMPILE)gcc

CFLAGS += -Wall -Wextra -Werror -Wfatal-errors
CFLAGS += -I ../include
CFLAGS += -L ../src
CFLAGS += -O2

VPATH = ../src:../include/tinyalsa

.PHONY: all
all: -ltinyalsa tinyplay tinycap tinymix tinypcminfo

tinyplay: tinyplay.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinycap: tinycap.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinymix: tinymix.c pcm.h mixer.h asoundlib.h libtinyalsa.a
tinypcminfo: tinypcminfo.c pcm.h mixer.h asoundlib.h libtinyalsa.a

.PHONY: clean
clean:
        rm -f tinyplay tinycap
        rm -f tinymix
        rm -f tinypcminfo

.PHONY: install
install: tinyplay tinycap tinymix tinypcminfo
        install -d $(DESTDIR)$(BINDIR)
        install tinyplay $(DESTDIR)$(BINDIR)/
        install tinycap $(DESTDIR)$(BINDIR)/
        install tinymix $(DESTDIR)$(BINDIR)/
        install tinypcminfo $(DESTDIR)$(BINDIR)/
        install -d $(DESTDIR)$(MANDIR)/man1
        install tinyplay.1 $(DESTDIR)$(MANDIR)/man1/
        install tinycap.1 $(DESTDIR)$(MANDIR)/man1/
        install tinymix.1 $(DESTDIR)$(MANDIR)/man1/
        install tinypcminfo.1 $(DESTDIR)$(MANDIR)/man1/

离线

#5 2018-02-03 10:25:02

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

zhuacai 说:
晕哥 说:

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

晕哥,上面几行代码是在Makefile上面加吗,要在那个位置加呢
下面是utils下的Makefile文件
DESTDIR ?=
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/man

CROSS_COMPILE ?=
CC = $(CROSS_COMPILE)gcc




CFLAGS += -Wall -Wextra -Werror -Wfatal-errors
CFLAGS += -I ../include
CFLAGS += -L ../src
CFLAGS += -O2

VPATH = ../src:../include/tinyalsa

.PHONY: all
all: -ltinyalsa tinyplay tinycap tinymix tinypcminfo

tinyplay: tinyplay.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinycap: tinycap.c pcm.h mixer.h asoundlib.h libtinyalsa.a

tinymix: tinymix.c pcm.h mixer.h asoundlib.h libtinyalsa.a
tinypcminfo: tinypcminfo.c pcm.h mixer.h asoundlib.h libtinyalsa.a

.PHONY: clean
clean:
        rm -f tinyplay tinycap
        rm -f tinymix
        rm -f tinypcminfo

.PHONY: install
install: tinyplay tinycap tinymix tinypcminfo
        install -d $(DESTDIR)$(BINDIR)
        install tinyplay $(DESTDIR)$(BINDIR)/
        install tinycap $(DESTDIR)$(BINDIR)/
        install tinymix $(DESTDIR)$(BINDIR)/
        install tinypcminfo $(DESTDIR)$(BINDIR)/
        install -d $(DESTDIR)$(MANDIR)/man1
        install tinyplay.1 $(DESTDIR)$(MANDIR)/man1/
        install tinycap.1 $(DESTDIR)$(MANDIR)/man1/
        install tinymix.1 $(DESTDIR)$(MANDIR)/man1/
        install tinypcminfo.1 $(DESTDIR)$(MANDIR)/man1/



晕哥,我明白了直接进入tinyalsa/utils

输入以下三行命令就行了
arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

离线

#6 2018-02-03 11:24:03

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

对, 是的。





离线

#7 2018-02-04 09:40:52

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

对, 是的。

晕哥,编译出来的tinyplay出错,播放不了wav,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#8 2018-02-04 09:42:42

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

zhuacai 说:
晕哥 说:

对, 是的。

晕哥,编译出来的tinyplay出错,播放不了wav,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0


# ./tinymix set 1 63
# ./tinymix set 2 1
# ./tinymix contents
Number of controls: 13
ctl     type    num     name                                    value
0       INT     1       DAC Playback Volume                     63 (range 0->63)
1       INT     1       Headphone Playback Volume               63 (range 0->63)
2       BOOL    2       Headphone Playback Switch               On, On
3       INT     1       Mic1 Playback Volume                    3 (range 0->7)
4       INT     1       Mic1 Boost Volume                       4 (range 0->7)
5       INT     1       ADC Gain Capture Volume                 3 (range 0->7)
6       BOOL    2       DAC Playback Switch                     Off, Off
7       BOOL    2       DAC Reversed Playback Switch            Off, Off
8       BOOL    2       Mic1 Playback Switch                    Off, Off
9       BOOL    2       Mixer Capture Switch                    Off, Off
10      BOOL    2       Mixer Reversed Capture Switch           Off, Off
11      BOOL    2       Mic1 Capture Switch                     Off, Off
12      ENUM    2       Headphone Source Playback Route         , DACMixer, , DACMixer
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#9 2018-02-04 10:43:30

daydayup
会员
注册时间: 2017-10-09
已发帖子: 343
积分: 343

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

你用哪个内核?

离线

#10 2018-02-04 18:02:22

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

daydayup 说:

你用哪个内核?

daydayup哥,用的4.13y内枋,有些wav文件可以打开,好像什么wav.mp3文件2 ch, 48000 hz, 16 bit声音不对
# ls
1.mp3         RECORD.WAV    TESTP.WAV     kok           tinymix
14_00.wav     RECORD2.WAV   TESTP2.WAV    qt4.sh        tinypcminfo
2.mp3         RECORD22.WAV  aa.avi        qt4.sh.bak    tinyplay
22.PCM        TEST5.WAV     analogclock   test.wav
OUT.PCM       TEST6.WAV     bb.tft        tinycap
# ./tinyplay TEST5.WAV
playing 'TEST5.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay TEST5.WAV
playing 'TEST5.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay TEST6.WAV
playing 'TEST6.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay 1.mp3
playing '1.mp3': 2 ch, 48000 hz, 16 bit
^C# ^C
# ./tinyplay 2.mp3
playing '2.mp3': 2 ch, 48000 hz, 16 bit
^C# ^C
# ./tinyplay RECORD2.WAV
playing 'RECORD2.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay RECORD22.WAV
playing 'RECORD22.WAV': 2 ch, 48000 hz, 16 bit
# ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#11 2018-02-04 18:18:55

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyplay 不能播放mp3文件, 只能播放wav文件.
mp3要用madplay等解码才能播放。





离线

#12 2018-02-04 20:03:40

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

tinyplay 不能播放mp3文件, 只能播放wav文件.
mp3要用madplay等解码才能播放。

晕哥,编译出来的tinyplay出错,有些wav播放不了电脑可以播放,有些wav可以可以播放但声音不对,能播放的wav都是输出 2 ch, 48000 hz, 16 bit,声音不对,是什么问题呢?
#  ./tinyplay 14_00.wav
failed to open for pcm 0,0

离线

#13 2018-02-05 13:50:24

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

到底是什么格式能放, 什么格式不能放?





离线

#14 2018-02-05 14:03:32

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

到底是什么格式能放, 什么格式不能放?

晕哥,wav不能放,提示failed to open for pcm 0,0 但电脑上可以放
#  ./tinyplay 14_00.wav
failed to open for pcm 0,

离线

#15 2018-02-05 14:58:57

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

我看了一下源码utils/tinyplay.c
在这里出错 pcm_is_ready,
看来是驱动问题,
你的内核是不是 4.13-y ?





离线

#16 2018-02-05 15:26:05

zhuacai
会员
注册时间: 2017-12-16
已发帖子: 234
积分: 233.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

我看了一下源码utils/tinyplay.c
在这里出错 pcm_is_ready,
看来是驱动问题,
你的内核是不是 4.13-y ?

晕哥,内核是 4.13-y 的

离线

#17 2018-02-05 15:32:27

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

那应该没有问题的, 上面几位网友都测试过。
或者你去荔枝派Q群下载我上传的固件试一试。





离线

#18 2018-03-14 08:57:39

Lusien4
会员
注册时间: 2017-12-29
已发帖子: 7
积分: 7

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

离线

#19 2018-03-14 09:07:15

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix





离线

#20 2018-03-14 09:44:53

Lusien4
会员
注册时间: 2017-12-29
已发帖子: 7
积分: 7

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:
Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix

谢谢晕哥,我现在的处理办法就是用开机脚本,最开始我把service设置成oneshot,后来看日志发现每次平板发出声音,就又会回到最初的状态,所以我把oneshot去掉了,现在这个service就是频繁开启关闭,目的是达到了,但不知道长时间运行后会不会造成死机,或者对功耗产生影响。所以想看能不能从源代码里入手。

离线

#21 2018-03-14 10:19:48

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

Lusien4 说:
晕哥 说:
Lusien4 说:

晕哥我想问一下,通过这些编译出来的tinymix指令修改音频通道,但是每次重新开机之后,又恢复初始状态了,那怎么办了。是不是要修改源代码

开机脚本, 自动执行tinymix

谢谢晕哥,我现在的处理办法就是用开机脚本,最开始我把service设置成oneshot,后来看日志发现每次平板发出声音,就又会回到最初的状态,所以我把oneshot去掉了,现在这个service就是频繁开启关闭,目的是达到了,但不知道长时间运行后会不会造成死机,或者对功耗产生影响。所以想看能不能从源代码里入手。

应该是可以的, 把驱动里面这几个寄存器的默认值调一下估计问题不大了。





离线

#22 2019-10-29 17:51:34

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,224
积分: 9197

离线

#23 2019-10-29 18:20:04

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

tinyalsa得安装有点麻烦,还是debian文件系统好用,apt一键安装

离线

#24 2020-12-20 00:09:41

leefei
会员
注册时间: 2020-12-19
已发帖子: 53
积分: 80

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

晕哥 说:

按上面的方法是动态链接tinyalsa,

下面这样可以手动静态链接:

cd tinyalsa/utils
arm-linux-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
arm-linux-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static



arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static
/usr/local/arm/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld: 找不到 -ltinyalsa
collect2: 错误: ld 返回 1
编译报错了

离线

#25 2021-02-03 00:03:01

忙着折腾
会员
注册时间: 2019-02-20
已发帖子: 30
积分: 19

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

为什么我的用mplayer播放mp3只有一边耳机响?你们的也是这样的吗?我内核是4.13-y

离线

#26 2021-02-08 11:18:03

忙着折腾
会员
注册时间: 2019-02-20
已发帖子: 30
积分: 19

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

忙着折腾 说:

为什么我的用mplayer播放mp3只有一边耳机响?你们的也是这样的吗?我内核是4.13-y

自己解决了,原来./tinymix set 2 1只打开了单声道,./tinymix set 2 1 1这样才是打开双声道。
FluxBB bbcode 测试
FluxBB bbcode 测试

离线

#27 2021-04-07 17:35:55

sck852414902
会员
注册时间: 2020-12-23
已发帖子: 12
积分: 18.5

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

~/linux/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinypcminfo tinypcminfo.c -ltinyalsa -L../src -I../include -static
../src/libtinyalsa.a: 无法添加符号: 不可识别的文件格式
collect2: error: ld returned 1 exit status
~/linux/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinymix tinymix.c -ltinyalsa -L../src -I../include -static
../src/libtinyalsa.a: 无法添加符号: 不可识别的文件格式
collect2: error: ld returned 1 exit status
~/linux/tinyalsa/utils$ arm-linux-gnueabihf-gcc -o tinyplay tinyplay.c -ltinyalsa -L../src -I../include -static

报错了,有人遇到吗?

离线

#28 2022-04-09 18:48:41

11小白11
会员
注册时间: 2022-03-05
已发帖子: 10
积分: 0

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

@leefei
我也碰到了,后来make clean后,之后不知道怎么再make就好了

离线

#29 2022-12-06 10:54:52

yixiuge
会员
注册时间: 2022-04-07
已发帖子: 53
积分: 63

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

$ aplay ymxl.wav
Playing WAVE 'ymxl.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

$ ./utils/tinyplay ymxl.wav
failed to open for pcm 0,0


奇怪了,ubuntu 18也是这样。

离线

#30 2022-12-06 12:47:23

yixiuge
会员
注册时间: 2022-04-07
已发帖子: 53
积分: 63

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

yixiuge 说:

$ aplay ymxl.wav
Playing WAVE 'ymxl.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

$ ./utils/tinyplay ymxl.wav
failed to open for pcm 0,0


奇怪了,ubuntu 18也是这样。

./utils/tinyplay /dev/urandom
playing '/dev/urandom': 2 ch, 48000 hz, 16 bit

./utils/tinyplay /dev/zero
playing '/dev/urandom': 2 ch, 48000 hz, 16 bit


奇怪,播放这些设备却是正常的。

离线

#31 2022-12-06 13:25:05

yixiuge
会员
注册时间: 2022-04-07
已发帖子: 53
积分: 63

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

@yixiuge
搞定了,tinyalsa 1.0.2 提示明显一些:

./utils/tinyplay test.wav
Unable to open PCM device 0 (cannot set hw params: Invalid argument)

我在想是不是不能设置44100采样率问题

果然,找了一首 48000的 wav搞定:

./utils/tinyplay test48000.wav
Playing sample: 2 ch, 48000 hz, 16 bit

完全OK!

离线

#32 2022-12-06 13:31:21

yixiuge
会员
注册时间: 2022-04-07
已发帖子: 53
积分: 63

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

@yixiuge
./utils/tinyplay /dev/urandom -r 6000 -i raw
./utils/tinyplay /dev/urandom -r 12000 -i raw
./utils/tinyplay /dev/urandom -r 24000 -i raw
./utils/tinyplay /dev/urandom -r 48000 -i raw

ubuntu 18.04 这几个测试OK,其他的采样率都不行。

离线

#33 2022-12-06 13:41:08

uuid
会员
注册时间: 2020-12-08
已发帖子: 45
积分: 31

Re: 小菜鸟又有新问题了, tinyalsa如何编译成arm-linux 静态链接版本

yixiuge 说:

@yixiuge
./utils/tinyplay /dev/urandom -r 6000 -i raw
./utils/tinyplay /dev/urandom -r 12000 -i raw
./utils/tinyplay /dev/urandom -r 24000 -i raw
./utils/tinyplay /dev/urandom -r 48000 -i raw

ubuntu 18.04 这几个测试OK,其他的采样率都不行。

$ tinyplay /dev/urandom -r 44100
failed to open for pcm 0,0


好奇试了一下,果然是 。。。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn