九、部分库编译:
zlib
- 下载
- 上传服务器
- rz 选择文件 如 :zlib-1.2.11.tar.gz
- 解压
- tar xvf zlib-1.2.11.tar.gz
- 进入解压后文件夹
- cd zlib-1.2.11
- 编译
- cd build
- cmake …
- 生成
- make
- 生成minizip
- 需要的lib及头文件路径
- lib 位于 build内
- unzip.h 等位于 contrib/minizip 内
- 需要将minizip内的所有文件移动到zlib-1.2.11/ 路径下
- 如果使用cmake,在CmakeList.txt 中的
add_executable()
加上 ioapi.o, zip.o, unzip.o 三个文件
curl
- 下载
- 官网:https://curl.haxx.se/download.html
- 上传服务器
- rz 选择文件 如 :curl-7.51.0.tar.gz
- 解压
- tar xvf curl-7.51.0.tar.gz
- 进入解压后文件夹
- cd curl-7.51.0
- 创建一个编译路径
- mkdir …/curl
- 编译
- ./configure --prefix=/home/pangu/tools/curl --without-ssl
- 生成
- make
- make install
jrtplib
-
下载
-
上传服务器
- rz 选择文件 如 :JRTPLIB-3.11.2.tar.gz
-
解压
- tar xvf JRTPLIB-3.11.2.tar.gz
-
进入解压后文件夹
- cd JRTPLIB-3.11.2
-
创建一个编译路径
- mkdir …/jrtp
-
修改CMakeLists.cmake
-
cmake_minimum_required(VERSION3.0) project(jthread) set(VERSION1.3.3) #************************************staradd****************************** SET(CMAKE_SYSTEM_NAME Linux) #Setting up the C compiler SET(CMAKE_C_COMPILER "gcc") #Setting up the C++ compiler SET(CMAKE_CXX_COMPILER "g++") #set install path 该目录是自己设定的目录 set(CMAKE_INSTALL_PREFIX "/home/pangu/tools/jrtp") set(JRTPLIB_INTERNAL_INCLUDES "/home/pangu/tools/jrtp/include") set(JRTPLIB_EXTERNAL_INCLUDES "/home/pangu/tools/jrtp/include") #************************************endadd****************************** include(CheckCXXSourceCompiles) set(_DEFAULT_LIBRARY_INSTALL_DIR lib)
-
-
编译
- cmake/
-
生成
- make
- make install
许多库的编译都可以遵循这个规律,在没有root权限的情况下,不更改编译路径 make install
会造成访问失败的问题。
十、查看文件及通道句柄:
- 详细信息:
ls -l /proc/[pid]/fd
- 句柄数:
ls /proc/[pid]/fd | wc -w
十一、排查CPU及内存占用:
排查CPU占用
参考文档:(170条消息) Linux C++ 程序占cpu%问题排查_幻想之渔的博客-CSDN博客
主要流程:
top -u pangu
后,输入大写P
输出会按照CPU占用排序,得到进程 PIDtop -Hp <PID>
后,输入大写P
得到线程CPU占用排序,得到线程 THDpstack <THD>
后,会显示出该线程的调用堆栈,给排查指明方向
排查内存占用
因为有时候在windows上可能不方便测试,或者windows的表现和linux不太一致。可能就会用到linux的内存排查工具 valgrind
参考文档:
主要使用方法:
- 保证当前服务器没有启动该程序;
valgrind --log-file=123123.txt --tool=memcheck --leak-check=full --show-leak-kinds=all --quiet ./Pangu