標籤:android article 調試 arm-linux tiny 提示 運行 bash android系統
本文轉載自:http://blog.csdn.net/tangdexi112/article/details/17579021
我們在進行音頻調試的時候,需要使用tinymix、tinyplay、tinycap等命令,來調試codec,那麼在android中,這些命令是不存在的,那麼我們需要使用這些命令的話,就只有自己移植了。該怎麼樣移植呢??? 1)開始,我們直接按照linux下的步驟移植,編寫Makefile 使用arm-linux-gcc 編譯源碼,編譯完成之後,通過adb push 將這些檔案傳送至/system/bin 下,運行tinymix ,發現無法執行,百度之後發現,傳統的linux下的執行程式的庫是glibc,而在android系統中是bionic ,庫不一樣,所以無法運行。 2)那該怎麼辦呢??我們查看源碼,發現在external/tinyalsa/ 檔案夾下已經存在了tinyalsa的源碼了,查看Android.mk:LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)LOCAL_C_INCLUDES:= external/tinyalsa/includeLOCAL_SRC_FILES:= mixer.c pcm.cLOCAL_MODULE := libtinyalsaLOCAL_SHARED_LIBRARIES:= libcutils libutilsLOCAL_MODULE_TAGS := optionalLOCAL_PRELINK_MODULE := false include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS)LOCAL_C_INCLUDES:= external/tinyalsa/includeLOCAL_SRC_FILES:= tinyplay.cLOCAL_MODULE := tinyplayLOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsaLOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) include $(CLEAR_VARS)LOCAL_C_INCLUDES:= external/tinyalsa/includeLOCAL_SRC_FILES:= tinycap.cLOCAL_MODULE := tinycapLOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsaLOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) include $(CLEAR_VARS)LOCAL_C_INCLUDES:= external/tinyalsa/includeLOCAL_SRC_FILES:= tinymix.cLOCAL_MODULE := tinymixLOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsaLOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)我們只需要模組化編譯這些命令即可,libtinyalsa.so動態庫是由mixer.c pcm.c 產生的,和這三個命令檔案無關。 3)模組化編譯:先在源碼中執行:source build/envsetup.sh ---->這一步會配置相關環境變數進入external/tinyalsa/下,在終端輸入命令mm 即可編譯。注意:如果提示找不到java環境,那麼就將java環境變數添加至系統中,具體為export 到 ~/.bashrc 檔案中,隨後source ~/.bashrc 即可。 其它檔案、動態庫、命令均可以這樣編譯或移植。
在android系統調試中使用tinyalsa命令【轉】