使用MingW-w64 编译 64bit Qt5

现在Qt官方提供的mingw编译器的预编译版本都是32bit的,如果想使用64bit的话需要自己手动进行编译。

自己编译的话只需要下载mingw-w64编译器和Qt的源码,之前在官方Wiki上看到还需要Perl,实际测试发现没有Perl也可以正常编译。

mingw-w64直接去mingw-w64官网下载就可以了,选择MingW-W64-builds下载。安装时记得架构记得选择x86_64,版本的话选择最新的就可以了,我编译时使用的是8.1.0没有问题。

Qt源码的话也去Qt官网下载,5.9.6版本的下载地址为http://download.qt.io/archive/qt/5.9/5.9.6/single/qt-everywhere-opensource-src-5.9.6.zip,其他版本的可以到http://download.qt.io/archive/qt/ 到对应目录下载,如果下载预编译版本不想注册的话也可以直接从这里下载安装包。

下载好Qt安装包后直接进行解压,解压完成后需要注意默认解压出的路径比较长比如E:\qt-everywhere-opensource-src-5.9.6\qt-everywhere-opensource-src-5.9.6,mingw存在bug,太长的路径编译会报错,找不到相应的头文件’ No such file or directory #include “… qfreetypefontdatabase_p.h”‘。

解压完成后,在源文件夹目录新建以下bat脚本,QtPrefixDir为执行make install命令时安装的目录、MingwDir为安装的mingw-w64的路径。

以上的编译的是动态链接库,如果要静态链接库的话可以用下面的脚本。

 

参考资料:

https://wohlsoft.ru/pgewiki/Building_Qt_on_MinGW-w64

https://bugreports.qt.io/browse/QTBUG-64298

使用mxnet c_predict_api实现SSD前向检测

Github上找到了一个别人写的基于c_predict_api实现的ssd 但是这个版本的GetImageFile函数有问题,导致检测结果不正确,经过将近一周时间的的排除才发现了问题的所在(吐血)。下面是正确的代码(mxnet大法好!!!!!!!)

 

windows命令提示符中鼠标选中文字导致程序挂起问题

在windows命令提示符中运行程序  当用鼠标选中程序输出的内容时会导致程序挂起问题。

这个问题是命令提示符的锅,可以修改命令提示符的属性  取消快速编辑模式和插入模式

这样就无法在命令提示符中选择文字了 也就不会导致程序挂起了 。如果还有什么好的解决方法欢迎大家一起交流。\

参考:

在控制台窗口用鼠标选中一段文字会导致 Domino 服务器挂起

linux 新建swap分区

1.创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
dd if=/dev/zero of=/root/swapfile bs=1M count=1024

2.格式化为交换分区文件:
mkswap /root/swapfile #建立swap的文件系统

3.启用交换分区文件:
swapon /root/swapfile #启用swap文件

关闭swapoff

4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0

Windows 10下使用MinGW编译opencv 3.3

https://www.cnblogs.com/shushanxiaoyao/p/6179824.html

https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows

http://blog.csdn.net/scien2011/article/details/52830794

https://wiki.qt.io/OpenCV_with_Qt

https://ricky.moe/2017/06/17/qt5-6-2-opencv3-1-integration/

 

问题

http://blog.csdn.net/cnbloger/article/details/77609108

https://stackoverflow.com/questions/41918477/how-to-build-opencv-3-2-0-with-mingw-on-windows

数据结构 03-树1 树的同构 03-树2 List Leaves

中国大学MOOC-陈越、何钦铭-数据结构

1.树的同构

定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。


图1

图2

现给定两棵树,请你判断它们是否是同构的。

输入格式:

输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数NN (\le 1010),即该树的结点数(此时假设结点从0到N-1N1编号);随后NN行,第ii行对应编号第ii个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。

输出格式:

如果两棵树是同构的,输出“Yes”,否则输出“No”。

 

输入样例1(对应图1):

输出样例1:

输入样例2(对应图2):

输出样例2:

程序代码:

2.List Leaves

Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer NN (\le 1010) which is the total number of nodes in the tree — and hence the nodes are numbered from 0 to N-1N1. Then NN lines follow, each corresponds to a node, and gives the indices of the left and right children of the node. If the child does not exist, a “-” will be put at the position. Any pair of children are separated by a space.

Output Specification:

For each test case, print in one line all the leaves’ indices in the order of top down, and left to right. There must be exactly one space between any adjacent numbers, and no extra space at the end of the line.

Sample Input:

Sample Output:

程序代码:

 

Openwrt 交叉编译(Crosscompile)及使用SDK生成ipk安装包

Openwrt交叉编译

首先我先介绍下什么是交叉编译:

交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我我用我的电脑(x86_64平台)编译出路由器(mips-AR71XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器。

Openwrt的交叉编译并不复杂。

第一步,你需要得到toolchain(工具链),我个人理解这个就相当于编译器

如何得到toolchian呢?有两种方法

1.到openwrt下载(要注意平台,比如我的路由器是tp-wr703n,所对应的平台就是AR71XX,就要到http://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/下载  OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

2.自己编译,在编译固件时可以看到有编译toolchain的选项(如果不知道我在说什么的话,先学习下openwrt编译)2015-03-17 16:45:11屏幕截图得到工具链后将其解压

第二步,设置环境变量

这里只有两个变量需要设置

1.将工具链中的bin文件夹加入PATH

2.添加一个STAGING_DIR  变量,将其指向放toolchain的文件夹,比如我把toolchain解压到了/home/yj/openwrt/mips-linux-gcc/下,就把STAGING_DIR 的值赋为/home/yj/openwrt/mips-linux-gcc/

环境变量的作用及设置请自行百度,附我的配置(看前两行)

2015-03-17 16:59:25屏幕截图

第三步,进行编译

设置好环境变量后,可以检验一下,在shell中输入编译器的前几部分,看是否可以自动补全

2015-03-17 17:04:21屏幕截图

接着我们就可以进行编译了

1.编译单个文件,就像普通的编译一样,只不过把gcc换成了交叉编译的编译器  执行  mips-openwrt-linux-uclibc-gcc test.c -o test    得到的test就是路由器上可以执行的文件

2.编译软件,在./configure 时加上–host=mips-openwrt-linux-uclibc

以mentohust为例

2015-03-17 17:20:52屏幕截图

再执行make 命令就可以生成可执行文件了

2015-03-17 17:23:45屏幕截图

在src文件夹中就可以看到mentohust的可执行文件已经生成

利用SDK来生成ipk文件

SDK中其实是包含toolchain的,SDK就是将编译好的文件在打包到一个ipk中,便于安装。

SDK与toolchain一样,可以自己编译也可以从网上下载,不过我试了下直接下载的使用有问题,而自己编译的可以使用。

SDK生成ipk包时需要的只是一个makefile文件,makefile里写了所需下载的文件、生成规则、软件版本、类型等。makefile的写法可以到openwrt的官方wiki中找到。

再次以mentohust为例生成ipk包。

mentohust.tar.gz 这是其makefile文件

解压后的文件夹放到SDK的package文件夹中

2015-03-17 18:43:52屏幕截图

然后执行  make package/mentohust/compile

这是编译指定包,编译package里所有的包的话直接 make就可以了

2015-03-17 19:30:09屏幕截图

编译后,生成ipk包

2015-03-17 18:44:16屏幕截图