日韩性视频-久久久蜜桃-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

總結

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

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

主站蜘蛛池模板: 亚洲三区在线观看无套内射 | 色香色香欲天天天影视综合网 | 国产在线视频网址 | 永久av| 日韩电影二区 | 无码精品在线视频 | 美女高潮在线 | 亚洲色图第三页 | 一级黄色片毛片 | 精品视频免费在线 | 日本女人毛茸茸 | 夫妻淫语绿帽对白 | 澳门久久 | 日韩av片免费观看 | 美女国产网站 | 亚洲在线观看免费视频 | 国产又黄又大又粗视频 | 无码人妻丰满熟妇区五十路百度 | 亚洲视频国产视频 | 精品国产96亚洲一区二区三区 | 久久网站视频 | 黄色精品免费 | 第一章婶婶的性事 | 女女h百合无遮涩涩漫画软件 | 中文字幕乱码人妻二区三区 | 开元在线观看视频国语 | 日韩手机在线观看 | 亚洲精品国产一区二区 | 色婷婷aⅴ | 日本不卡一区视频 | 99精品偷自拍 | 国产日韩在线看 | 一本久道久久 | 国产一久久| 99久久久无码国产精品不卡 | 久久8| av网站免费播放 | 99热这里只有精品1 亚洲人交配视频 | 国产精品9191| 夜色综合网 | 免费国产在线视频 | 国产不卡在线播放 | 亚洲逼院 | 亚州av综合色区无码一区 | 青青久视频 | 伊人免费 | 五月天色站 | 亚洲自拍偷拍综合 | 中文字幕第三页 | 亚洲鲁鲁 | 竹菊影视日韩一区二区 | 欧美日韩国产不卡 | 伊人影院亚洲 | 91官网在线观看 | 国产精品高潮呻吟久久av黑人 | 黄色激情视频网站 | 日本亲近相奷中文字幕 | 91香草视频 | 亚洲天堂三区 | 久久影院国产 | 香蕉成人网 | 色吊丝网站 | 日批在线播放 | 波多野结衣视频一区二区 | youjizz.com最新 | 少妇一级淫片免费放2 | 日韩一卡二卡在线 | 伊人成年综合网 | 看黄色的网址 | 浴室里强摁做开腿呻吟男男 | 国产黄色网 | 亚洲最大看欧美片网站 | 日韩插插插 | 懂色av,蜜臀av粉嫩av | 波多野吉衣久久 | 国产一区二区 | 国产乱乱 | 精品无码国产一区二区三区51安 | 亚洲av无码国产精品永久一区 | 黄色一级视频网站 | 日韩欧美国产片 | 黄色片子免费看 | 一级做a爱片 | 国产亚洲在线观看 | 解开人妻的裙子猛烈进入 | 国产精品国产三级国产传播 | 97天天干| 国语对白一区二区 | 青青伊人精品 | 成人h动漫精品一区二区器材 | 激情福利网 | 好逼天天操| 久草视频福利在线 | 自拍偷自拍亚洲精品播放 | 国产精品久久国产精麻豆96堂 | 玖草在线观看 | 国产无码精品在线观看 | 黄色精品一区 | 禁漫天堂免费网站 |