想在ARM上跑一个自己写的alsa应用程序,为了编译的问题纠结了一晚上,把自己的一些经验写下来
首先是安装alsa-lib
从网上找的交叉编译方法:
ALSA交叉编译
1, 下载alsa-lib-1.0.15rc2.tar.bz2。
http://download.chinaunix.net/download/0001000/358.shtml
或者http://www.alsa-project.org/main/index.php/Main_Page
2, tar jxvf alsa-lib-1.0.15rc2.tar.bz2
cd alsa-lib-1.0.15rc2
./configure --host=arm-none-linux-gnueabi --prefix=/home/part2/alsa-lib
make & make install
这时在/home/part2/alsa-lib目录下就产生了一些头文件了。
这部还算顺利,因为写的是一个大程序用的是QT开发环境,加上对Makefile的理解还不深,期间遇到了很多问题。
主要是找不到alsa/asoundlib.h,编译时找不到-lasound 程序在pc上跑的好好的一用arm-linux-g++就出现一大堆问题
这是我的pro文件:
TARGET = alsa_test_arm2
TEMPLATE = app
INCLUDEPATH += /liu/jrtp/include/jrtplib3 /
/liu/jthread/include/jthread /
/home/part3/alsa-lib/include
LIBS += -L/home/part3/alsa-lib/lib /
-lasound /
/liu/jrtp/lib/libjrtp.a /
/liu/jthread/lib/libjthread.a
HEADERS += myalsa.h /
myrtpsession.h /
mysound.h /
myvolume.h /
sound.h
SOURCES += myalsa.cpp /
myrtpsession.cpp /
mysound.cpp /
mytest.cpp /
myvolume.cpp
当时想在makefile中加入-lasound 结果发现加到那里都是错,-lasound是一个链接,帮助include找到lib的,要紧跟在lib库文件的后面
他在打开makefile文件后找到了他的位子:
LIBS = $(SUBLIBS) -L/usr/local/QtEmbedded-4.5.2/lib -L/home/part3/alsa-lib/lib -lasound /liu/jrtp/lib/libjrtp.a /liu/jthread/lib/libjthread.a -lQtGui -L/usr/local/tslib/lib -L/usr/local/QtEmbedded-4.5.2/lib -lts -lpng -lQtNetwork -lQtCore -lz -lm -lrt -ldl -lpthread
果然是紧跟在alsa-lib的后面,我以前总是把它放在最后面,难怪总是显示找不''到-lasound 。
搞编程的过程有时候是痛苦的,特别是遇到链接编译的问题,网上各种招贴子求答案,结果可能就是自己犯了一个小错误,多加了一个'/'或者库文件 的位子不对,可是历经万难解决后那种成就感确实是让人很爽的呢!!加油