クロスコンパイルはテストLinuxを使用してALSAオーディオツールalsa-lib-1.2とalsa-utils-1.2.2を使用します.
24131 ワード
記事の目次公式サイト コンパイルalsa-lib-1.2.2 コンパイルalsa-utils-1.2.2 コンパイルncurses-622 は を使用します.参照リンク 公式サイト
Advinced Linux Sound Architecture(ALSA)project homepage
現在の最新バージョンは、alsa-lib-1.2.tar.bz 2 alsa-utils-12.tar.bz 2です.
コンパイルalsa-lib-1.2.2
加入--disable-alsamixerは配置できます.次のコードを追加します. または直接にシステムコールを行う(試みなし)
Announcing ncurses 6.2(Download)Index of/gnu/ncurses
make[1]Enttering directory‘/home/book/xhrStudy/tools/alsa/ncurses-6.2/progs’mkdir-p/home/book/xhrStudy/tools/tools/ncurses/ncurses-6/tmpn/sun/usto/bir/bir/bir/bin/bin/bin/bin/bistastall-c-totototoshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshatototototototototototototototototototose the format of the input file`/home/book/xhrStudy/tools/alsa/ncurses-622/tmp/bin/tic'/usr/bin//install:strip process terminated abnormally Makefile:202:recipe for target‘install.progs’failed
実行するのは/usr/bin/installです.明らかにインストールプログラムに問題があります.vim Makefile検索installが65行目を発見しました.
/xhr/sound:arcocorded test.wav ALSA lib conf.cc:4081:(sndon figuuuuuuuuuudatetetu)Cannot access file/home/book/xhrStuuudy/tools/alsa-lib-1.1.2/tmpmp/shre/alalalalalsasasasa/alalalalalalalalalalalalalalalalalaaaapppppppppppppppdadadadadadadadadadadadadadadadadadashshshshshshaaaappppppppppppppppppppppppp2:audio open error:No such file or directory
解決方法:nfsに同じパス/home/book/xhrStudy/tools/alsa/alsa-lib-1.1.2/tmpを追加し、libでコンパイルしたshareディレクトリを配置します.
参照リンク
Advinced Linux Sound Architecture(ALSA)project homepage alsa-lib-12.alsa-utils-12.undefined reference to`inotiy_init 1’Announcing ncurses 6.2(Download)Index of/gnu/ncurses fmpegクロスコンパイルmake install:strip:Unbale to recognise the format the input file解決strip:Unise to cognise the format問題
Advinced Linux Sound Architecture(ALSA)project homepage
現在の最新バージョンは、alsa-lib-1.2.tar.bz 2 alsa-utils-12.tar.bz 2です.
コンパイルalsa-lib-1.2.2
tar xjf alsa-lib-1.2.2.tar.bz2
cd alsa-lib-1.2.2
./configure --help > alsa_help.txt
ヘルプドキュメントを取得:Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
継続実行コマンド:./configure --prefix=$PWD/tmp --host=arm-linux
make && make install
エラー:timer_hw.c: In function 'snd_timer_hw_open':
timer_hw.c:249: error: '__kernel_long_t' undeclared (first use in this function)
timer_hw.c:249: error: (Each undeclared identifier is reported only once
timer_hw.c:249: error: for each function it appears in.)
カーネルでinclude/asm-generanic/posix_を検索します.types.hは、この定義を含み、alsa-lib-1.2/src/timer/timer_に追加する.local.h#ifndef __kernel_long_t
typedef long __kernel_long_t;
typedef unsigned long __kernel_ulong_t;
#endif
インストール後のヘッダファイル、ライブラリファイルをコンパイラと開発ボードにコピーします.# NFS
export XHR_NFS_ROOT=/nfsroot/rootfs-1.20.0
cp -r tmp/include/* /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cp -rd tmp/lib/*so* /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
cp -rd tmp/lib/*so* $XHR_NFS_ROOT/lib
コンパイルalsa-utils-1.2.2tar xjf alsa-utils-1.2.2.tar.bz2
cd alsa-utils-1.2.2
./configure --prefix=$PWD/tmp --host=arm-linux
エラー:checking panel.h usability... no
checking panel.h presence... no
checking for panel.h... no
configure: error: required curses helper header not found
クロスコンパイルalsa-utilsはデフォルトではalsamixerが生成されますので、このときはncursesが使用されますが、クロスコンパイルされたncursesライブラリであり、alsa-utilsコールパスに参加しても問題があります.ncursesクロスコンパイルはalsamixerをサポートしていませんので、alsa-utilsをクロスコンパイルする時にconfigureオプションを追加します.–disable-alsamixerは上記のエラーを報告しません.加入--disable-alsamixerは配置できます.
./configure --prefix=$PWD/tmp --host=arm-linux --disable-alsamixer --with-curses=ncurses --disable-xmlto --disable-nls
make && make install
メーク時報が間違っていますalsactl.c: In function 'do_nice':
alsactl.c:164: error: 'SCHED_IDLE' undeclared (first use in this function)
alsactl.c:164: error: (Each undeclared identifier is reported only once
alsactl.c:164: error: for each function it appears in.)
カーネルで検索したinclude/linux/sched.hは、定義を含むalsa-utils-1.2.2/alsactl/alsactl.hに追加する./*
* Scheduling policies
*/
#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
/* SCHED_ISO: reserved but not implemented yet */
#define SCHED_IDLE 5
/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
#define SCHED_RESET_ON_FORK 0x40000000
再度makeのエラー:monitor.c: In function 'monitor':
monitor.c:431: error: 'IN_NONBLOCK' undeclared (first use in this function)
monitor.c:431: error: (Each undeclared identifier is reported only once
monitor.c:431: error: for each function it appears in.)
カーネルで検索したinclude/linux/inotify.hは、定義を含み、alsa-utils-1.2.2/alsactl/list.hに追加する./* Flags for sys_inotify_init1. */
#define IN_CLOEXEC O_CLOEXEC
#define IN_NONBLOCK O_NONBLOCK
再度makeのエラー:alsactl-monitor.o: In function `monitor':
/home/book/xhrStudy/tools/alsa/alsa-utils-1.2.2/alsactl/monitor.c:431:
undefined reference to `inotify_init1'
可能な解決方法:int inotify_init1(int flags)
{
int flags1 = 0;
int inotify_fd = inotify_init();
if ((inotify_fd != -1) && (flags != 0))
{
if((flags1 = fcntl(inotify_fd, F_GETFL)) != -1)
{
fcntl(inotify_fd, F_SETFL, flags1 | flags);
}
}
return inotify_fd;
}
#define _GNU_SOURCE
#include
#include
int inotify_init1(int flags) {
return syscall(332, flags);
}
原文で提示されたソフト中断番号は332ですが、3.4.2カーネルを検索したところ、arch/arm/kersnel/call.Sではこのシステムの呼び出し番号は360です.正しいかどうかは分かりません.記録してください.arch/arm/kernel/calls.S:372:/* 360 */ CALL(sys_inotify_init1)
arch/arm/include/asm/unistd.h:389:#define __NR_inotify_init1 (__NR_SYSCALL_BASE+360)
alsa-utils-1.2.2バージョンが新すぎて、多くの記号が定義されていないので、alsa-utils-1.0.27.2に変更することにしました.コンパイル方法は同じです.エラーがないので、実行可能ファイルを開発ボードにコピーします.cp -d tmp/bin/* $XHR_NFS_ROOT/bin
cp tmp/sbin/* $XHR_NFS_ROOT/sbin
コンパイルncurses-6.2Announcing ncurses 6.2(Download)Index of/gnu/ncurses
tar xzf ncurses-6.2.tar.gz
cd ncurses-6.2
./configure --prefix=$PWD/tmp --host=arm-linux --with-shared
make && make install
メークエラー:make[1]Enttering directory‘/home/book/xhrStudy/tools/alsa/ncurses-6.2/progs’mkdir-p/home/book/xhrStudy/tools/tools/ncurses/ncurses-6/tmpn/sun/usto/bir/bir/bir/bin/bin/bin/bin/bistastall-c-totototoshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshshatototototototototototototototototototose the format of the input file`/home/book/xhrStudy/tools/alsa/ncurses-622/tmp/bin/tic'/usr/bin//install:strip process terminated abnormally Makefile:202:recipe for target‘install.progs’failed
実行するのは/usr/bin/installです.明らかにインストールプログラムに問題があります.vim Makefile検索installが65行目を発見しました.
INSTALL = /usr/bin/install -c
root~: grep "echo tic" * -nR
progs/Makefile:176:actual_tic = `echo tic$x| $(TRANSFORM)`
progs/Makefile.in:176:actual_tic = `echo tic$x| $(TRANSFORM)`
解決できませんでした.時間があれば試してみます.まずncurses-599をインストールして使用します.インストール方法は同じです.エラーはありません.ヘッダファイル、ライブラリファイルをコンパイラとルートファイルシステムにコピーします.cp -r tmp/include/* /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cp -rd tmp/lib/*so* /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
cp -rd tmp/lib/*so* $XHR_NFS_ROOT/lib
cp -rd tmp/share $XHR_NFS_ROOT$PWD/tmp/
使用mkdir /dev/snd
cd /dev/snd/
ln -s /dev/controlC0
ln -s /dev/pcmC0D0p
ln -s /dev/pcmC0D0c
レコードを使うarecord -d 20 -c 2 -t wav -r 44100 -f "Signed 16 bit Little Endian" test.wav
20 (-d 20), (-c 2), 44.1kHz Wave
applayを使って録音を再生するaplay test.wav
エラー:/xhr/sound:arcocorded test.wav ALSA lib conf.cc:4081:(sndon figuuuuuuuuuudatetetu)Cannot access file/home/book/xhrStuuudy/tools/alsa-lib-1.1.2/tmpmp/shre/alalalalalsasasasa/alalalalalalalalalalalalalalalalalaaaapppppppppppppppdadadadadadadadadadadadadadadadadadashshshshshshaaaappppppppppppppppppppppppp2:audio open error:No such file or directory
解決方法:nfsに同じパス/home/book/xhrStudy/tools/alsa/alsa-lib-1.1.2/tmpを追加し、libでコンパイルしたshareディレクトリを配置します.
参照リンク
Advinced Linux Sound Architecture(ALSA)project homepage alsa-lib-12.alsa-utils-12.undefined reference to`inotiy_init 1’Announcing ncurses 6.2(Download)Index of/gnu/ncurses fmpegクロスコンパイルmake install:strip:Unbale to recognise the format the input file解決strip:Unise to cognise the format問題