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

【Linux】ncurses交叉编译

1、下载源文件

http://ftp.gnu.org/pub/gnu/ncurses/

Tags · mirror/ncurses (github.com)

Ncurses project files : Ncurses (launchpad.net)

2、加压并配置

./configure  --prefix=/usr/aarch64-linux-gnu --host=aarch64-linux  CC=aarch64-linux-gnu-gcc --without-cxx --without-cxx-binding --without-ada --without-manpages --enable-overwrite --without-debug --without-tests --with-shared --without-tests --without-progs

3、编译并安装

make&&make install

【Linux】make cfg使用

make cfg all tgt=rom ARCH=mips CROSS_COMPILE=mipsel-linux- DEBUG=-g

第一部分:ARCH=mips CROSS_COMPILE=mipsel-linux- DEBUG=-g

ARCH=mips 设置了平台是mips平台
CROSS_COMPILE=mipsel-linux-  设置交叉编译器前缀,在编译时会替换成mipsel-linux-,之所以设置环境变量,一个是方便在这儿不用输入绝对路径,当找不到交叉编译器的时候,需要输入交叉编译器的绝对路径
DEBUG=-g 设置调试信息

第二部分:make cfg all tgt=rom

make cfg 是配置
make all 
make tgt=rom 在Makefile.inc里可以看到,是生成的二进制文件

【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

【Linux】linux fdisk tf卡分区操作解析说明

/*****************************************************************************
     *                   linux fdisk tf卡分区操作解析说明
     * 说明:
     *     本文主要是解析linux fdisk命令的使用,是一个朋友留下的自动化脚本。
     *
     *                                       2015-9-16 晴 深圳 南山平山村 曾剑锋
     ****************************************************************************/
    #! /bin/sh
     
    # 卸载接下来需要分区的设备
    umount    /dev/mmcblk1boot0
    umount    /dev/mmcblk1boot1
    umount    /dev/mmcblk1p1
    umount    /dev/mmcblk1p2
    sync                                    # 同步上面的操作
    sleep                                  # 等待1秒
     
    fdisk    /dev/mmcblk1    << EOF          # 开始分区
    d           # 删除操作
               # 删除分区1
    d           # 删除操作
               # 删除分区2,其实只剩下2,这里会出现menu
    m           # 显示操作menu,相当于帮助
    m           # 显示操作menu,相当于帮助
    n           # 创建新分区,相当于new
    p           # 创建primary分区
               # 创建primary分区1
                # First sector (-, default ):
    +50M        # Last sector, +sectors or +size{K,M,G} (-, default ): +50M, Partition  of type Linux and of size  MiB is set
    a           # toggle a bootable flag, 选择启动分区
               # 选择分区1作为启动分区
    t           # change a partition's system id, 改变分区类型
    c           # c  W95 FAT32 (LBA),选择FAT32格式
    n           # 创建新分区,相当于new
    p           # 创建primary分区
               # 创建primary分区2
                # First sector (-, default ):
                # Last sector, +sectors or +size{K,M,G} (-, default ): Using default value , Partition  of type Linux and of size 3.7 GiB is set
    p           # 查看创建结果
    w           # 保存退出
    EOF
    sync                                # 同步以上操作
    sleep 
     
    umount /dev/mmcblk1p1               # 卸载创建的分区
    umount /dev/mmcblk1p2               # 卸载创建的分区
    sync                                # 同步以上操作
    sleep 
     
    mkdosfs  -F  /dev/mmcblk1p1       # 以FAT32格式化mmcblk1p1分区
    sync
    sleep 
     
    mkfs.ext3 /dev/mmcblk1p2            # 以ext3格式化mmcblk1p2分区
    sync
    sleep 
     
    echo "finish make tf card"          # 输出提示信息