gcc中加入编译选项
1 | g++ -g -Wl,-Map=test.map -no-pie -rdynamic ... |
内核设置如下
1 | echo 0 > /proc/sys/kernel/randomize_va_space |
addr2line
1 | addr2line -e ./test -Cif 0x401425 |
人,技术,生活。
gcc中加入编译选项
1 | g++ -g -Wl,-Map=test.map -no-pie -rdynamic ... |
内核设置如下
1 | echo 0 > /proc/sys/kernel/randomize_va_space |
addr2line
1 | addr2line -e ./test -Cif 0x401425 |
1 2 | apt install vim apt install cscope |
将以下脚本保存为~/.vimrc,注意要用dos2unix转换一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | if has("cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb endif nmap <C-[>s :scs find s <C-R>=expand("<cword>")<CR><CR> nmap <C-[>g :scs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-[>c :scs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-[>t :scs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-[>e :scs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-[>f :scs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-[>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> nmap <C-[>d :scs find d <C-R>=expand("<cword>")<CR><CR> nmap <C-[>a :scs find a <C-R>=expand("<cword>")<CR><CR> set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set fileformats=unix set cindent |
每次源码更新时,在源码根目录执行
1 2 3 | #find . -type f | cat > cscope.files #find . -name "*.c" -o -name "*.cpp" -o -name "*.h" -o -name "*.hpp" > cscope.files cscope -bqR |
Maybe a CRITICAL_SECTION struct memory is copied to another class member, so two CRITICAL_SECTION variables hold the same value.
将android-ndk-r20b和openssl-master解压在同一层目录,在此目录创建脚本bld.sh,内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/sh BASE_DIR=/home/sdb/android/ndk-r20b export ANDROID_NDK_HOME=${BASE_DIR}/android-ndk-r20b PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH cd openssl-master/ #./Configure --prefix=${BASE_DIR}/openssl-arm32 android-arm -D__ANDROID_API__=29 ./Configure --prefix=${BASE_DIR}/openssl-arm32 android-arm -D__ANDROID_API__=16 #./Configure --prefix=${BASE_DIR}/openssl-x86 android-x86 -D__ANDROID_API__=16 make make install |
运行bld.sh脚本就会生成OpenSSL库文件。
First, convert mp4 file to h264 file, save script below as convert.bat
1 2 3 | ffmpeg.exe -i %1 -s 1920x1080 -b:v 1536K -an output.mp4 ffmpeg -i output.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 output.264 #ffmpeg -i test.264 -vcodec copy -f mp4 test.mp4 |
drag a mp4 file over convert.bat, after a while, output.264 will be generated. download h264LiveMediaServer.zip, unzip as h264LiveMediaServer.exe, move it to the same directory with output.264, just double click and run h264LiveMediaServer.exe, it will notify you the rtsp url, then input the url in the url edit box on the EuhatRtsp Demo app ui, click begin button, wait several seconds, you will see the video rendering in EuhatRtsp.
Before running h264LiveMediaServer.exe, vc2019 x86 Redistributable must be installed.
Visit H264LiveMediaServer on Github to get the source code.
Msvsmon was unable to start a server named ...
To solve this problem, just leave the directory of Msvsmon as the original name, for example, 'x86'.
1 | x^2\bigg|_0^{+\infty} |
build.gradle中ndk节内增加abiFilters
1 2 3 4 5 6 7 8 | android { defaultConfig { ... ndk { abiFilters 'armeabi-v7a' } } } |
refer to: https://www.jianshu.com/p/3b58174e89f1
1 2 3 4 5 6 7 8 9 | #define PRINT_MACRO_HELPER(_x) #_x #define PRINT_MACRO(_x) #_x " = " PRINT_MACRO_HELPER(_x) #define DEFINED_PI 3.14 #define DEFINED_NULL #pragma message(PRINT_MACRO(DEFINED_PI)) #pragma message(PRINT_MACRO(DEFINED_NULL)) #pragma message(PRINT_MACRO(UNDEFINED)) //#error print stop here. |
refer to: https://blog.csdn.net/xshbx/article/details/7981564
The reason is that the request permission list to function ActivityCompat.requestPermissions is empty.