zoukankan      html  css  js  c++  java
  • 跨平台踩的一个大坑!

    1. 必须确定目标平台的操作系统, 2. 该系统的版本号, 

    一、安装ubuntu

    下载VM14

    https://pan.baidu.com/s/1pbDXpgpNQTdTRzzKNWfE1A

    FF31K-AHZD1-H8ETZ-8WWEZ-WUUVA

    下载ubuntu

    镜像地址 http://ftp.sjtu.edu.cn/ubuntu-cd/16.04/

    安装: https://blog.csdn.net/gongxifacai_believe/article/details/52444938?utm_source=blogxgwz4

    连接xshell

    apt-get install openssh-server

    sudo /etc/init.d/ssh start

    二、opencv安装 官网介绍

    https://docs.opencv.org/3.4.0/d7/d9f/tutorial_linux_install.html

    按照官网安装之后:

    g++ `pkg-config --cflags opencv` test.cpp `pkg-config --libs opencv` -o test

    ldd dlsd ./test

    查看缺少的链接库

    三、链接

    添加链接,相当于在Windows VS下在属性里添加头文件, 添加链接器

    vi /etc/ld.so.conf         添加 /usr/local/lib

    再运行sudo ldconfig,
    修改bash.bashrc文件,sudo vi /etc/bash.bashrc
    在文件末尾加入:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH

    source /etc/bash.bashrc

    ubantu 屏幕自适应:   apt-get install open-vm-tools  apt-get install open-vm*  reboot

    启用共享文件, 也方便文本或文件复制  https://jingyan.baidu.com/article/5553fa82957f6f65a239349b.html 

    windows可以看见共享目录, 想要linux也看见, 需要 

    vmhgfs-fuse .host:/ /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other,nonempty   #挂载共享目

    ls /mnt/hgfs/

    +cuda.. https://www.cnblogs.com/weiweisuhe/p/6112850.html

    四、安装QT create 在ubantu开发

    下载  http://download.qt.io/archive/qt/

    无法run的时候 使用chmod 775 -R 改变文件夹权限

    qt for android:

    apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 openjdk-8-jdk -y 

    apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib -y

    apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 -y

    apt-get install dpkg-dev libsdl1.2-dev libesd0-dev -y

    apt-get install git-core gnupg flex bison gperf build-essential -y

    apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib -y

    apt-get install libc6-dev-i386 -y

    apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev -y

    apt-get install lib32z-dev ccache -y

    apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4 -y

    run安装的时候, 将所有与android有关的组件勾选。

    打开qt, Tools -> options: 

    点击example, 在样例中找到android的一些样例, 进行测试,  遇到什么问题解决什么问题,  有可能是sdk有的包没安装,   去{sdk_dir}/tools/.android    启动sdk manager   .

    C项目:

    apt-get install libgl1-mesa-dev

    新建项目, -> 空qt,   -> new 一个C++文件即可

    五、 为QT添加链接路径 

    INCLUDEPATH += /usr/local/include/*
    LIBS += /usr/local/lib/*

    添加详细路径:

    #INCLUDEPATH += /usr/local/include
    #/usr/local/include/opencv

    #LIBS += /usr/local/lib/libopencv_imgproc.so
    #/usr/local/lib/libopencv_highgui.so

    构建第三方库独立支持:

    首先安装摄像头驱动

    apt-get install libv4l-dev

    再次,由于VM USB默认使用的2.0, 造成与摄像头不兼容,  在该虚拟机选项中手动改成 USB 3.0

    测试1: 将第三方库 一起放入工程 

    在该项目下 创建一个3rdparty目录,   其下有include, lib,  两个目录,  其中内容从 /usr/local 直接复制即可

    在 .pro中  :

    LIBS += $$PWD/3rdparty/lib/*
    INCLUDEPATH += $$PWD/3rdparty/include/*
     
     
    测试2: 在QT上创建一个so共享库项目,  并用另一个普通项目调用
     
    -> 首先是配置 .pro文件
    INCLUDEPATH += /usr/local/include
    /usr/local/include/opencv
    /usr/local/include/opencv2
    LIBS += /usr/local/lib/libopencv_imgproc.so
    /usr/local/lib/libopencv_highgui.so
    /usr/local/lib/libopencv_core.so
    /usr/local/lib/libopencv_imgcodecs.so
    /usr/local/lib/libopencv_video.so
    /usr/local/lib/libopencv_videoio.so
     
    ->  编写 .so 的头文件,      注意如果包含第三方库的头文件,该引用不能写在 .so的头文件中:
    #ifndef UNTITLED2_H
    #define UNTITLED2_H
    #include <iostream>
    int run();
    #endif // UNTITLED2_H
     
    -> 编写函数: 
    #include "untitled2.h"
    #include <opencv2/opencv.hpp>
    using namespace cv;
    using namespace std;
    ...
     
    ->  新建另一个项目:    include untitled2.h       在 main() 中调用  run()即可.
     
     
    测试3: 将第三方库放在一个文件夹, 将主程序放在另一个,调用其中的include, lib即可
    -> .pro
    LIBS += $$PWD/../3rdparty/lib/*
    INCLUDEPATH += $$PWD/../3rdparty/include/*
     
    在该共享库项目中, #include "../3rdparty/include/opencv2/opencv.hpp" 即可,   然后生成一些测试函数, 打成so文件
     
    新建另一个普通项目,  引入so, 引入head, 直接调用该函数即可。
     
     当需要使用到c++11编译时,  在 .pro 文件中添加,  CONFIG += c++11
     
     
    ubantu安装 zbar
     
    wget http://downloads.sourceforge.net/zbar/0.10/zbar-0.10.tar.bz2
    tar xf zbar-0.10.tar.bz2
    cd zbar-0.10
    sed -i 's|linux/videodev.h|libv4l1-videodev.h|g' zbar/video/v4l1.c include/config.h.in configure.ac configure
    ./configure --prefix=/home/isuker/work/app/ --without-gtk --disable-video --without-imagemagick --without-python
     
     

    export CFLAGS=""

    make

    make install

    安装ndk:  

    下载: https://developer.android.google.cn/ndk/downloads/

    解压在 /app 文件夹中

    vi /etc/profile       export NDK_HOME=/home/lirui/app/android-ndk-r16b       export PATH=$NDK_HOME:$PATH       source /etc/profile

    测试:   echo $NDK       ndk-build -v

    安装到磁盘空间不足!  扩容磁盘, 充分区, 使用分区工具: apt-get install gparted

    给VM分配好空间后, 使用gparted 新增一个分区 /dev/sda3 10G, 将这个新分区挂载到 /home/lirui/app 下:

    mount /dev/sda3 /home/lirui/add/

    解除的话:  umount /dev/sda3 /home/lirui/add/

    但是, 此时的挂载 是暂时性的,  想要永久性挂载, 需要:

    blkid /dev/sda3 

    得到UUID = ebe513a0-a859-4325-84ac-a2aeb3d0b075

    vi /etc/fstab

    UUID=ebe513a0-a859-4325-84ac-a2aeb3d0b075 /home/lirui/external ext4 defaults 0 2

    df -h

    测试jdk:

    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

    java -version

    javac -version

    安装sdk:

    在官网找到 SDK Tool下载 :  https://www.androiddevtools.cn/

    启动sdk manager :   android-sdk-linux/tools/android      按照目标安卓的系统安装 API,  我按的是4.4

     加入环境变量   export PATH=$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/platform-tools:$JAVA_HOME/bin:$NDK:$PATH
     
    使用QT开发:
    算了, 还是使用 android studio吧,  QT的支持还是不是很好;
     android studio 呵呵!,    还是用回QT吧!
     
     
     
     
    安装NDK:
    官网下载地址: https://blog.csdn.net/momo0853/article/details/45200093    用wget 你懂的!
     
    chmod a+x android-ndk-r10d-linux-x86.bin
    ./android-ndk-r10d-linux-x86.bin
     
    自己编译opencv for android:
     
    查看../platforms/android/android.toolchain.cmake      得知:   在/etc/profile 中, ndk的变量名,必须是 $ANDROID_NDK, 添加环境变量后,  在build目录输入:
     
    cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake -DANDROID_NDK=$ANDROID_NDK -DCMAKE_BUILD_TYPE=Release -DANDROID_ABI=armeabi -DANDROID_NATIVE_API_LEVEL=19  ..
    

    出现各种无法解决的bug,  最终还是选择直接下载opencv 官网的 opencv for android。

    新建一个android项目,   Application -> QT widgets :

    编辑 .pro配置文件

    unix {
    message("Using unix configuration")
    ANDROID_OPENCV = E:/Qt/Qt5.3.2_Android/OpenCV-2.4.9-android-sdk/sdk/native
     
     
    INCLUDEPATH += 
    $$ANDROID_OPENCV/jni/include/opencv    
    $$ANDROID_OPENCV/jni/include/opencv2    
    $$ANDROID_OPENCV/jni/include            
     
     
    LIBS += 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_contrib.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_legacy.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_ml.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_objdetect.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_calib3d.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_video.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_features2d.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_highgui.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_androidcamera.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_flann.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_imgproc.a 
    $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_core.a 
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/libIlmImf.a  
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/liblibjpeg.a 
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/liblibpng.a 
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/liblibtiff.a 
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/liblibjasper.a 
    $$ANDROID_OPENCV/3rdparty/libs/armeabi-v7a/libtbb.a
    }
    

     在编译时, 设置gradle: 

     找到gradle配置目录:

     

    ~/external/qt-android/Examples/Qt-5.5/quick/demos/build-calqlatr-Android_for_armeabi_v7a_GCC_4_9_Qt_5_5_0-Debug/android-build$ vi gradle.properties
    

    qt 在 ubantu下开发C/C++还行,  开发Android还是算了吧!!!!

    请转到android studio开发!

      

     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    LeetCode153 Find Minimum in Rotated Sorted Array. LeetCode162 Find Peak Element
    LeetCode208 Implement Trie (Prefix Tree). LeetCode211 Add and Search Word
    LeetCode172 Factorial Trailing Zeroes. LeetCode258 Add Digits. LeetCode268 Missing Number
    LeetCode191 Number of 1 Bits. LeetCode231 Power of Two. LeetCode342 Power of Four
    LeetCode225 Implement Stack using Queues
    LeetCode150 Evaluate Reverse Polish Notation
    LeetCode125 Valid Palindrome
    LeetCode128 Longest Consecutive Sequence
    LeetCode124 Binary Tree Maximum Path Sum
    LeetCode123 Best Time to Buy and Sell Stock III
  • 原文地址:https://www.cnblogs.com/ruili07/p/9831819.html
Copyright © 2011-2022 走看看