意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)

来源:恒创科技 编辑:恒创科技编辑部
2024-02-04 19:11:59


基本思想:决定建立一个github 跨平台文件夹,偶尔更新常用的各种平台静态包和动态包,供个人和他人项目使用;

​​https://github.com/sxj731533730/cross_platform_lib.git​​


43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)

源码尽量来自github,最新的包,小伙伴可以自己编译,提供方法和已经编译好的跨平台包,let‘s go~~

环境配置参考​​1、Android 移植C++ 开发的第三方.so包和.a包_sxj731533730-​​

Dlib包:
ubuntu@DESKTOP-L50FRR6:~$ git clone https://github.com/davisking/dlib.git
ubuntu@DESKTOP-L50FRR6:~/dlib$ mkdir build
ubuntu@DESKTOP-L50FRR6:~/dlib$ cd build/

armeabi-v7a的静态包

ubuntu@DESKTOP-L50FRR6:/mnt/d/temp_cross_platform_lib/dlib/build$ cmake -D CMAKE_INSTALL_PREFIX=. -D CMAKE_C_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-gcc -D CMAKE_CXX_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-g++ -D CMAKE_BUILD_TYPE=Release  -D CMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions -D DLIB_NO_GUI_SUPPORT=ON ..
ubuntu@DESKTOP-L50FRR6:~/dlib/build$ make -j8
ubuntu@DESKTOP-L50FRR6:~/dlib/build$ make install

其中目录结构为:include和lib包就是我们需要的静态包和头文件;移动到对应结构的arm7 文件夹中

ubuntu@DESKTOP-L50FRR6:/mnt/d/temp_cross_platform_lib/dlib/build$ ls
CMakeCache.txt CPackConfig.cmake Makefile dlib install_manifest.txt
CMakeFiles CPackSourceConfig.cmake cmake_install.cmake include lib

我会把生成的文件放在对应dlib/libs/armeabi-v7a下,github的目录结构如下,后面的具体平台,包只介绍编译选项,不在详细阐述~

ubuntu@DESKTOP-L50FRR6:/mnt/d/cross_platform_lib$ tree -L 3
.
├── LICENSE
├── README.md
├── dlib
│ ├── include
│ │ └── dlib
│ └── libs
│ ├── arm64-v8a
│ ├── arm64-v8a
│ ├── armeabi-v7a
│ │ ├── cmake
│ │ ├── libdlib.a
│ │ └── pkgconfig
| |
│ ├── x86
│ └── x86_64

arm64-v8a的静态包

ubuntu@DESKTOP-L50FRR6:/mnt/d/temp_cross_platform_lib/dlib/build$ cmake -D CMAKE_INSTALL_PREFIX=. -D CMAKE_C_COMPILER=/usr/local/arm-linux-androideabi/bin/aarch64-linux-android21-clang -D CMAKE_CXX_COMPILER=/usr/local/arm-linux-androideabi/bin/aarch64-linux-android21-clang++ -D CMAKE_BUILD_TYPE=Release  -D CMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions -D DLIB_NO_GUI_SUPPORT=ON ..

使用objdump命令 可以查看编译的静态包的二进制的位数,供跨平台的32/64位机使用~

43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)_android

window10平台x86_64平台

D:\temp_cross_platform_lib\dlib\build>cmake -DCMAKE_INSTALL_PREFIX=F:/dlib-19.21/build -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE=mingw32-make -G "MinGW Makefiles" ..
D:\temp_cross_platform_lib\dlib\build>mingw32-make -j 8
D:\temp_cross_platform_lib\dlib\build>mingw32-make install

以上包验证通过~

Eigen库

armeabi-v7a的静态包

ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib$ axel -n 100 https://gitlab.com/libeigen/eigen/-/archive/3.3.8/eigen-3.3.8.zip
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib$ unzip eigen-3.3.8.zip
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib$ cd eigen-3.3.8/
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/eigen-3.3.8$ mkdir build
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/eigen-3.3.8$ cd build/
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/eigen-3.3.8/build$cmake -D CMAKE_INSTALL_PREFIX=. -D CMAKE_C_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-gcc -D CMAKE_CXX_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-g++ -D CMAKE_BUILD_TYPE=Release -D CMAKE_CXX_FLAGS=-std=c++11 ..
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/eigen-3.3.8/build$make -j8
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/eigen-3.3.8/build$sudo make install

由于Eigen库在编译时并不生成库文件,只是生成对应的头文件,在使用Eigen时,只需要包含include目录即可,所以我将build目录下的include目录修改名字为eigen3_armeabi_v7a

同理arm-v8a的编译换一下编译器即可eigen3_arm_v8a

同理使用mingw-32编译的头文件为eigen3_x86_64 (使用cmake-gui编译的,嫌弃命令行)

43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)_desktop_02

编译 完成之后,注意 使用管理员权限打开cmd 生成一下include目录

E:\temp_cross_platform_lib\eigen-3.3.8\build>mingw32-make install

修改名字为eigen3_x86_64

上个彩蛋,测试一下,

使用clion(破解版)包链接:https://pan.baidu.com/s/1d3STaeY76_6t19DzIEvt4g
提取码:j3wy
复制这段内容后打开百度网盘手机App,操作更方便哦

CMakeLists.txt的内容;

cmake_minimum_required(VERSION 3.17)
project(untitled2)
include_directories(${CMAKE_SOURCE_DIR}/include/eigen3_x86_64)
set(CMAKE_CXX_STANDARD 14)

add_executable(untitled2 main.cpp)

上个彩蛋~~

43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)_android_03

Glog

以下存在问题 请勿参考~~~ 待解决

armeabi-v7a的静态包

ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/glog/arm7build$ cmake -D CMAKE_INSTALL_PREFIX=. -D CMAKE_C_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-gcc -D CMAKE_CXX_COMPILER=/usr/local/arm-linux-androideabi/bin/arm-linux-androideabi-g++ -D CMAKE_BUILD_TYPE=Release  -D CMAKE_CXX_FLAGS=-std=c++11 -D BUILD_TESTING=OFF ..
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/glog/arm7build$ make -j7
ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/glog/arm7build$ sudo make install

arm64-v8a的静态包 同理 换一下编译器

ubuntu@DESKTOP-L50FRR6:/mnt/e/temp_cross_platform_lib/glog/arm7build$ cmake -D CMAKE_INSTALL_PREFIX=. -D CMAKE_C_COMPILER=/usr/local/arm-linux-androideabi/bin/aarch64-linux-android21-clang -D CMAKE_CXX_COMPILER=/usr/local/arm-linux-androideabi/bin/aarch64-linux-android21-clang++ -D CMAKE_BUILD_TYPE=Release  -D CMAKE_CXX_FLAGS=-std=c++11 -D BUILD_TESTING=OFF ..

win10_x86_64

43、常用c++跨平台静态包和动态包 dlib/eigen/glog....(持续更新)_ubuntu_04

注意 使用管理员权限打开cmd

E:\temp_cross_platform_lib\glog\arm7build>mingw32-make install
上一篇: 11、Android Studio的ARM Neon学习笔记 下一篇: 手机怎么远程登录云服务器?