日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自用的测试文件夹内容整理

發布時間:2023/12/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自用的测试文件夹内容整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 文件夾目錄結構
  • makefile
  • 編譯腳本
    • linux_x86
    • Android_arm

文件夾目錄結構

mediaTest ├── android //具體平臺對應的文件夾 │ ├── arm64 │ │ ├── include │ │ ├── jni │ │ │ ├── Android.mk │ │ │ ├── Application.mk │ │ │ └── compile_android_r16b_x64.sh │ │ └── media_libs │ └── arm │ ├── include │ ├── jni │ │ ├── Android.mk │ │ ├── Application.mk │ │ ├── compile_android_r16b_x86.sh │ │ └── readme │ ├── media_libs │ └── ndk_build ├── linux │ ├── x64 │ │ ├── bin │ │ ├── include │ │ └── media_libs │ └── x86 │ ├── bin │ ├── include │ └── media_libs ├── compile_android_x86.sh ├── compile_linux_x64.sh ├── compile_linux_x86.sh ├── makefile ├── media_files //使用到的數據文件 │ ├── g7221c │ ├── g722_240 │ ├── g728 │ ├── g728_240 │ ├── red_opus_127 │ ├── test_mpeg.mp4 │ └── wo.h264 ├── readme.todo └── source└── MediaDeadlockCheck.cpp

makefile

# Rules for all Makefiles # 作者: yjj # 日期: 2021/01/07 # # 使用前必須傳入以下參數 # ARCHNAME 編譯平臺 # DEMO_DIR 存放生成得執行文件得目錄 # MEDIA_FILES_DIR 代碼中使用到文件存放目錄.PHONY: init clean show check demo install .PHONY: test1 test2 test3 test4TOP := $(shell pwd) INC_BASE_PATH = $(TOP)/$(PLATFORM)/$(ARCHNAME)/include LNK_BASE_PATH = $(TOP)/$(PLATFORM)/$(ARCHNAME)/media_libs DEMO_DIR = $(TOP)/$(PLATFORM)/$(ARCHNAME)/$(DEMODIR) MEDIA_FILES_DIR = $(TOP)/$(MEDIAFILESDIR) SRC_FILES_PATH = $(TOP)/source#不同平臺得參數配置 ifeq ($(PLATFORM),linux) ifeq ($(ARCHNAME),x86) CXXCOMPILER := g++ DEMONAME := MediaDeadlockCheck PLATFORM_ARCH_SPECIAL := -m32 PLATFORM_ARCH_SPECIAL_LD := -m32CXXDEF := -D_LINUX_ $(DEFINE_LIST) CXXFLAG := -g -frtti -fexceptions -Wall -Wno-strict-aliasing -fPIE -pie #-L指定鏈接庫的搜索路徑 -l 指定搜索鏈接庫的名稱 不指定-static默認使用動態鏈接 CXXLDFLAG := -L$(LNK_BASE_PATH) -fPIE -pie LINKLIBS := -ldl -lpthread EXTRAFLAG :=#頭文件搜索路徑 INCFLAG := -I$(INC_BASE_PATH) endififeq ($(ARCHNAME),x64) CXXCOMPILER := g++ DEMONAME := MediaDeadlockCheck PLATFORM_ARCH_SPECIAL := -m64 PLATFORM_ARCH_SPECIAL_LD := -m64CXXDEF := -D_LINUX_ $(DEFINE_LIST) CXXFLAG := -g -frtti -fexceptions -Wall -Wno-strict-aliasing -fPIE -pie #-L指定鏈接庫的搜索路徑 -l 指定搜索鏈接庫的名稱 不指定-static默認使用動態鏈接 CXXLDFLAG := -L$(LNK_BASE_PATH) -fPIE -pie LINKLIBS := -ldl -lpthread EXTRAFLAG :=#頭文件搜索路徑 INCFLAG := -I$(INC_BASE_PATH) endif endififeq ($(PLATFORM),android) ifeq ($(ARCHNAME),x86) CXXCOMPILER := arm-linux-androideabi-g++ ANDROID_NDK_ROOT := $(ANDROID_NDK_ROOT_R16) DEMONAME := MediaDeadlockCheck PLATFORM_ARCH_SPECIAL := --sysroot=$(ANDROID_NDK_ROOT)/sysroot -isystem $(ANDROID_NDK_ROOT)/sysroot/usr/include/arm-linux-androideabi -I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/include/ -I$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++abi/include -I$(ANDROID_NDK_ROOT)/sources/android/support/include -pie -fPIEPLATFORM_ARCH_SPECIAL_LD := --sysroot=$(ANDROID_NDK_ROOT)/platforms/android-14/arch-arm -L$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a -lc++_shared -pie -fPIECXXDEF := -D_LINUX_ -D_ANDROID_ -D__ANDROID_API__=14 CXXFLAG := -g -frtti -fexceptions -Wall -Wno-strict-aliasing CXXLDFLAG := -L$(LNK_BASE_PATH) LINKLIBS := -ldl EXTRAFLAG :=INCFLAG := -I$(INC_BASE_PATH)endif endif#$(foreach <var>,<list>,<text>) #這個函數的意思是,把參數<list>;中的單詞逐一取出放到參數<var>;所指定的變量中,然后再執行< text>;所包含的表達式。每一次<text>;會返回一個字符串,循環過程中,<text>;的所返回的每個字符串會以空格分隔,最后當整個循環結束時,<text>;所返回的每個字符串所組成的整個字符串(以空格分隔)將會是foreach函數的返回值。 CXXFILES = $(foreach dir,$(SRC_FILES_PATH),$(wildcard $(dir)/*.cpp))#替換文件后綴 ,也可以寫成 OBJS = $(FILES:%.cpp=%.o) OBJS_FILES := $(patsubst %.cpp,%.o, $(CXXFILES)) #替換OBJS_FILES前面的路徑 為實際存放.o得路徑 OUTPUT_OBJS_DIR = $(DEMO_DIR)/obj OBJS_FILES := $(foreach files, $(OBJS_FILES), $(subst $(SRC_FILES_PATH), $(OUTPUT_OBJS_DIR), $(files)))show:@#make會打印每條命令,然后再執行,這就叫做回聲(echoing)@#在命令的前面加上@,就可以關閉回聲@echo "=============== $(ARCHNAME) show start==============="@echo INC_BASE_PATH : $(INC_BASE_PATH)@echo LNK_BASE_PATH : $(LNK_BASE_PATH)@echo CXXCOMPILER : $(CXXCOMPILER)@echo DEMO_DIR : $(DEMO_DIR)@echo PLATFORM_ARCH_SPECIAL : $(PLATFORM_ARCH_SPECIAL)@echo PLATFORM_ARCH_SPECIAL_LD : $(PLATFORM_ARCH_SPECIAL_LD)@echo CXXDEF : $(CXXDEF)@echo CXXFLAG : $(CXXFLAG)@echo CXXLDFLAG : $(CXXLDFLAG)@echo LINKLIBS : $(LINKLIBS)@echo EXTRAFLAG : $(EXTRAFLAG)@echo INCFLAG : $(INCFLAG)@echo "=============== $(ARCHNAME) show end ==============="#拆解編譯過程到.o為止,然后統一鏈接 #g++ hello.cpp -o test #1.預處理 #g++ -E hello.cpp -o hello.i #2.編譯 #g++ -S hello.i -o hello.s #3.匯編 #g++ -c hello.s -o hello.o #4.鏈接 #g++ hello.o -o hello#可以考慮在之后添加靜態庫和動態庫的生成#Make命令允許對文件名,進行類似正則運算的匹配,主要用到的匹配符是%。比如,假定當前目錄下有 f1.c 和 f2.c 兩個源碼文件,需要將它們編譯為對應的對象文件。 #%.o: %.c #等同于下面的寫法。 #f1.o: f1.c #f2.o: f2.c #使用匹配符%,可以將大量同類型的文件,只用一條規則就完成構建。 $(OUTPUT_OBJS_DIR)/%.o: $(SRC_FILES_PATH)/%.cpp@echo "小夫我要進來了!"$(CXXCOMPILER) $(CXXDEF) $(PLATFORM_ARCH_SPECIAL) $(CXXFLAG) $(EXTRAFLAG) $(INCFLAG) -c -o $@ $<demo: $(OBJS_FILES)$(CXXCOMPILER) $(PLATFORM_ARCH_SPECIAL_LD) $(CXXLDFLAG) $(LINKLIBS) $(OBJS_FILES) -o $(DEMONAME)clean:@rm -rf $(DEMO_DIR)check:@if [ -z "${CXXCOMPILER}" ]; then echo "please set CXXCOMPILER "; exit 1; fiinit:@if [ ! -d "$(DEMO_DIR)" ]; then mkdir $(DEMO_DIR); fi@if [ ! -d "$(OUTPUT_OBJS_DIR)" ]; then mkdir $(OUTPUT_OBJS_DIR); fiinstall: check show clean init demo@cp $(LNK_BASE_PATH)/*.so $(DEMO_DIR)/@mv $(DEMONAME) $(DEMO_DIR)/@cp $(MEDIA_FILES_DIR)/* $(DEMO_DIR)/test1:@echo "放你媽屁,RNG會3:0 ?" test2:@echo "我不知道,我是豬!" test3: test1 test2@echo $<@echo $@@echo $?@echo $^ test4: @echo $(CXXFILES)@echo $(OBJS_FILES)

編譯腳本

linux_x86

compile_linux_x86.sh

#! /bin/sh function compile_help() {echo "Usage: $0"echo " $0 [options] [args]"echo " "echo "Options:"echo " "echo " -d 要傳入的預編譯宏"echo " 當前支持如下預編譯宏:USE_127 TEST_EnableCrypt"} function define_join() {cmd_list=`echo $* | sed -nr 's/-d //p'`for arg in $cmd_listdoecho "外部傳入參數:"$argdefine_list=$define_list"-D"$arg" "doneecho "預編譯宏拼接:"$define_list }if [ "$1" == "-h" ]; thencompile_helpexit 0 elif [ "$1" == "-d" ]; thendefine_join $* elseecho "nothing to do before make !" fimake DEFINE_LIST="$define_list" PLATFORM=linux ARCHNAME=x86 DEMODIR=bin MEDIAFILESDIR=media_files -f makefile install

Android_arm

Android不采用makefile編譯,使用jni,當然你也可以試試makefile,我的makefile里有Android的選項你可以參照linux_x86的編譯腳本來改一下,但是它只支持r16b。

Android.mk

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS)#export LD_LIBRARY_PATH=./ LOCAL_MODULE:= MediaDeadlockCheckMY_PROC_BASE_PATH := $(LOCAL_PATH)/../../.. LIB_PATH := $(MY_PROC_BASE_PATH)/android/x86/media_libs LINK_LIB_PATH := -L$(LIB_PATH)LOCAL_C_INCLUDES := $(MY_PROC_BASE_PATH)/android/x86/include SRC_FILES_PATH := $(MY_PROC_BASE_PATH)/source LOCAL_SRC_FILES := $(foreach dir,$(SRC_FILES_PATH),$(wildcard $(dir)/*.cpp))LOCAL_CFLAGS += -D_LINUX_ -D_ANDROID_ -pie -fPIE LOCAL_CFLAGS += -fvisibility=hidden -Wall -Wstrict-prototypes LOCAL_LDFLAGS += $(LINK_LIB_PATH) LOCAL_LDLIBS += -lz -ldl -pie -fPIE LOCAL_SHARED_LIBRARIES := LOCAL_PRELINK_MODULE:= falseinclude $(BUILD_EXECUTABLE)

Application.mk

# it is needed for ndk-r5APP_STL := c++_shared #APP_STL := gnustl_sharedAPP_CPPFLAGS := -frttiAPP_MODULES += MediaDeadlockCheckAPP_ABI := armeabi-v7aAPP_PLATFORM := android-14

compile_android_r16b_x86.sh

DEMO_DIR="../ndk_build" LNK_BASE_PATH="../media_libs" MEDIA_FILES_DIR="../../../media_files"if [ ! -d "$DEMO_DIR" ]; thenmkdir $DEMO_DIR elserm -rf $DEMO_DIR fiecho "Android R16b x86 build start" $ANDROID_NDK_ROOT_R16/ndk-build V=1 B=1 NDK_DEBUG=1 NDK_LIBS_OUT=$DEMO_DIR NDK_OUT=$DEMO_DIRif [ $? != 0 ]; thenecho "Android R16b x86 build fail"exit 1 elseecho "Android R16b x86 build success"cp $LNK_BASE_PATH/*.so $DEMO_DIR/armeabi-v7acp $MEDIA_FILES_DIR/* $DEMO_DIR/armeabi-v7a fi

readme

1.export ANDROID_NDK_ROOT_R16=/opt/android-ndk-r16b 2.usage: make_standalone_toolchain.py [-h] --arch{arm,arm64,mips,mips64,x86,x86_64}[--api API][--stl {gnustl,libc++,stlport}] [--force][-v][--package-dir PACKAGE_DIR | --install-dir INSTALL_DIR] build standalone tools built by ${ANDROID_NDK_ROOT_R16}/build/tools/make_standalone_toolchain.py --arch arm64 --api 21 --stl libc++ --force --install-dir /opt/myndk/standalone/android-ndk-r16b-arm

總結

以上是生活随笔為你收集整理的自用的测试文件夹内容整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在哪看毛片 | 日本免费不卡一区二区 | 国产免费又黄又爽又色毛 | 韩国三级hd中文字幕叫床浴室 | 岛国大片在线免费观看 | 成人黄色大全 | 看黄色一级视频 | 好男人www在线视频 我们的2018在线观看免费高清 | 国产免费av一区二区三区 | av在线网页| 六十路息与子猛烈交尾 | 九色蝌蚪视频 | 男女啪动最猛动态图 | 国产中文网 | 91久久精品无码一区二区 | 国产精品夜夜嗨 | 亚洲国产97| 4色av| 国产成人精品网 | 日批网站在线观看 | 台湾三级伦理片 | 国产在线精品播放 | 一级片在线 | 国产精品9191| 久久久久久亚洲中文字幕无码 | 国产精品久久久久久中文字 | 红桃视频亚洲 | 在线观看免费黄视频 | 狠狠鲁影院 | 国产精品久久久久久久久 | 乱子伦一区二区三区 | 欧洲视频一区二区 | 亚洲图片 自拍偷拍 | 91豆花视频 | 日本高清视频www夜色资源 | 精品成人免费一区二区在线播放 | 欧美高清在线 | 日本a视频在线观看 | 澳门黄色 | 久久免费手机视频 | 午夜毛片视频 | 久久综合激情 | 九色婷婷 | 国产91久 | av丝袜在线观看 | 天天拍天天干 | 在线播放一区 | 好吊操这里只有精品 | 成人午夜精品福利免费 | 国产天堂 | 亚洲精品第一页 | 国产探花一区二区三区 | 精品一区二区毛片 | 亚洲无码精品一区二区三区 | 人人插人人| 91亚洲国产 | www久久久久久久 | 成人乱人乱一区二区三区一级视频 | 丰满少妇被猛烈进入一区二区 | 麻豆一二三区 | 理论片在线观看视频 | 国产资源在线免费观看 | 亚洲美女操 | 五月天激情婷婷 | 免费成人av在线 | 97se亚洲国产综合在线 | 波多野结衣绝顶大高潮 | 日本中文字幕在线看 | 女人高潮被爽到呻吟在线观看 | 小向美奈子在线观看 | 韩日视频一区 | 国产精品久久在线 | 欧美亚洲日本一区 | 色男人在线 | 国产精品30p | 丁香色欲久久久久久综合网 | 欧美性受xxxx| 国产高清视频免费 | 黄色男同视频 | 国产亚洲精品久久久久久打不开 | 艳母日本动漫在线观看 | 精品成人免费一区二区在线播放 | 日韩精品视频播放 | 国产亚洲欧美日韩精品 | 女人17片毛片60分钟 | 亚洲国产精品麻豆 | 69日本xxxxxxxxx30| www.中文字幕.com | 青青草原亚洲视频 | 大学生高潮无套内谢视频 | 亚洲AV成人无码电影在线观看 | 禁果av一区二区三区 | 91肉色超薄丝袜脚交一区二区 | 蜜臀久久精品 | 国内偷拍av| 美日韩一级| www.199麻豆| 日韩在线免费播放 | 欧美日韩一区二区在线观看 |