15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

分类标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

分类归档 操作系统

【Linux】libmongoc交叉编译

1、下载并解压

https://github.com/mongodb/mongo-c-driver/releases/download/1.23.4/mongo-c-driver-1.23.4.tar.gz

编译环境:Ubuntu 20.04

2、环境配置

 sudo apt-get install cmake libssl-dev libsasl2-dev

tar xzf mongo-c-driver-1.23.4.tar.gz
cd mongo-c-driver-1.23.4
mkdir cmake-build
cd cmake-build
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ -DOPENSSL_INCLUDE_DIR=/usr/aarch64-linux-gnu/include/openssl/ -DCMAKE_PREFIX_PATH=/usr/lib/aarch64-linux-gnu/ -DCMAKE_INSTALL_PREFIX:PATH=/usr/aarch64-linux-gnu ..
CMAKE_INSTALL_PREFIX:安装目录
OPENSSL_INCLUDE_DIR:openssl目录
CMAKE_PREFIX_PATH:指定查找目录
CMAKE_CXX_COMPILER:C++编译器目录
CMAKE_C_COMPILER:C编译器目录

3、编译安装

cmake --build .
sudo cmake --build . --target install

4、修改配置文件

vim ./src/libmongoc/CMakeLists.txt
target_link_libraries (${test}
         PRIVATE
            $<$<C_COMPILER_ID:MSVC>:DbgHelp.dll>
            $<$<PLATFORM_ID:Windows>:shlwapi>
            $<$<BOOL:${use_shared}>:mongoc_shared>
            $<$<NOT:$<BOOL:${use_shared}>>:mongoc_static>
            ${LIBRARIES}
            ${RESOLV_LIBRARIES} -lrt
      )

target_link_libraries (mongoc_shared PRIVATE ${LIBRARIES} PUBLIC ${BSON_LIBRARIES} -lrt)

【Linux】openssl交叉编译

1、下载解压源码

https://github.com/openssl/openssl/releases/download/openssl-3.1.0/openssl-3.1.0.tar.gz

2、编译配置

./Configure --prefix=/usr/lib/aarch64-linux-gnu/ --host=aarch64-linux  CC=aarch64-linux-gnu-gcc --openssldir=/usr/lib/aarch64-linux-gnu/ '-Wl,-rpath,$(LIBRPATH)'
./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=aarch64-linux-gnu-

3、编译安装

make
make install

4、arm平台错误

aarch64-linux-gnu-gcc: error: unrecognized command line option '-m64'

打开Makefile,去掉-m64

CNF_CFLAGS=-pthread -m64
CNF_CXXFLAGS=-std=c++11 -pthread -m64

【Linux】lksctp-tools交叉编译

编译平台:Ubuntu20.04 x86 amd64

目标平台:Ubuntu20.04 arm arrch64

1、软件库下载

wget https://github.com/sctp/lksctp-tools/archive/refs/tags/lksctp-tools-1.0.18.zip

解压进入目录

2、配置编译环境

sudo apt install automake
sudo apt install libtool

./bootstrap
./configure  --prefix=/usr/lib/aarch64-linux-gnu/ --host=aarch64-linux  CC=aarch64-linux-gnu-gcc

3、编译安装

make
make install

【Linux】DMA内存占用计算

1、查看内存页大小

root@Linux:~# getconf PAGESIZE
4096

2、查看DMA分配关系

root@Linux:~# cat /proc/buddyinfo
Node 0, zone      DMA      4      5      0      5      1      3      4      4      6      7    461
Node 0, zone   Normal    456   1982   1205    478    151     49     31     18     10      5   6732

3、计算DMA内存占用大小

每一行代表当前的内存区中连续1、2、4、8、16、32、64、128、256、512、1024个可使用空闲页的数量,当前系统默认的页大小为4K,所以分别对应的大小为1x4k、2x4k、4x4k、8x4k、16x4k、32x4k、64x4k、128x4k、256x4k=1M、512x4k=2M、1024x4k=4M,由此可以计算出:

DMA大小为:

3x4M+1x2M+1x1M+…=16M

DMA32大小为:

539x4M+22M+21M+…=2G

Normal大小为:

7043x4M+9x2M+6x1M+…=27G

【Centos】双网卡配置优先级

1、为啥会涉及这问题

现象:无法正常DNS解析

当你使用双网卡上网的设备上网的时候,由于路由优先级问题及路由遍历超时问题,会造成DNS解析路由短时间不正确问题,也就无法上网。

2、调整网卡路由优先级

通过分析我们可以通过调整路由解析优先级,把需要上网的网卡路由优先级提高。

IPV4_ROUTE_METRIC=90

值越小优先级越高,默认100

增加配置

vim /etc/sysconfig/network-scripts/ifcfg-ens224

重启生效:systemctl restart network.service

【Ubuntu】libpcap安装

1、下载安装包

wget https://www.tcpdump.org/release/libpcap-1.9.1.tar.gz

2、解压安装包

tar xvf libpcap-1.9,1.tar.gz
cd libpcap-1.9.1

3、配置编译安装

export CC=aarch64-linux-gnu-gcc
export CFLAGS='-Os'
./configure --host=aarch64-unknown-linux-gnu --with-pcap=linux
make
make install
unset CC
unset CFLAGS

【PCIE】Linux pcie支持热插拔

1、驱动安装

2、查询pcie port码

root@ssss:~# lspci
0000:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)
0000:01:00.0 Ethernet controller: Device 1ec4:555 (rev 01)
0001:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)
0002:00:00.0 PCI bridge: Freescale Semiconductor Inc Device 8d90 (rev 20)

3、删除pcie设备

echo 1 > /sys/bus/pci/devices/0000\:03\:00.0/remove

4、重新加载pcie设备

echo 1 > /sys/bus/pci/rescan