Building Linux Kernel on Odroid-U3

This is the year 2020, Odroid-U3 is far from a powerful ARM development board in today’s standard, but it is still more than capable! Quad-core ARMv7 CPU and 2GB RAM, which means I can still run some light services and test my toy projects without paying any fees to AWS or Azure. The year 2020 also means that this little device can be powered by the mainline Linux kernel without many troubles (if any)! Better than that, the process is ridiculously straightforward!

In this post, I put together the steps I did to build the Linux kernel using upstream mainline source code natively on Odroid-U3. If you’re interested in cross-building from your x86 machines, you can find plenty of tutorials on that on the Internet.

Continue reading “Building Linux Kernel on Odroid-U3”

QCA 2.1.0在Windows上用MinGW的编译过程

QCA是Qt Cryptographic Architecture的缩写,简而言之就是安全组件(如OpenSSL)的Qt封装,方便Qt程序调用,而不用写一大串C代码。QCA自然是开源的,而且好像是KDE的一个project(反正代码是在KDE的git服务器上)。

时隔四年,QCA总算发布了新版本,虽然是小版本号的变化(2.0.3 -> 2.1.0),但却是非常重要的更新!!!首先支持使用Qt5了,其次使用CMake而不是qmake来管理了。如果不支持Qt5的话,我也不会关心QCA的…………

但是目前主流Linux发行版的官方仓库还是2.0.3版的QCA,而且这次也没有Windows builds下载,只有源码包,好在编译不太麻烦,下面就记录了本次编译的过程(环境:Windows 8.1 x64 Pro, MinGW64 4.9.1 x64, MSYS, Qt 5.3.2 x64 static, OpenSSL 1.0.1j x64 static, CMake 3.1.0)。这次要编译的就是静态链接的QCA,如果你要编译动态链接的QCA,上面的工具链必须也是动态链接的!

Continue reading “QCA 2.1.0在Windows上用MinGW的编译过程”

Windows下VS2012编译安装Ruby 2.1.1(64位版)

虽然学过一段时间的Python,但是决心转投Ruby玩玩看,Ruby也有GTK+和Qt的扩展(还有KDE的API绑定呢!)。Linux下安装是so easy了,Windows下也有懒人安装包,不过版本比较老。所以我打算用VS2012编译安装最新的稳定版本2.1.1,下面就讲讲Windows下的编译安装过程(以编译安装64位版本为例)。

Continue reading “Windows下VS2012编译安装Ruby 2.1.1(64位版)”

Linux下Qt创建和调用共享库文件.so

费了点功夫,总算get了编写共享库(Shared Library,Windows下称为“动态链接库”,即Dynamic Link Library)和调用的这个新技能!

动态链接库的好处是不言而喻的,一个稍微复杂一点的程序,顶层设计的时候良好的类库划分可以让工作变得很简单,而将不同类编译成共享库文件可以实现程序的模块化,提高代码复用程度,在保证接口兼容的情况下更新一个程序只用更新共享库(Windows下是dll,Linux下常见的是so)即可。

下面以Linux下的Qt Creator这个IDE为例,讲述Qt(严格意义上是C++)共享库文件的编译和调用。

Continue reading “Linux下Qt创建和调用共享库文件.so”

DragonFly BSD编译安装Qt 5.2.0

BSD系统在Qt世界里压根不是Tier 1的级别啊,看看Digia只提供Windows, Linux, Mac, Android的预编译文件就知道了。。没关系,好歹Qt是个开源软件,自己动手编译,丰衣足食。下载Qt 5.2.0的源代码这一步我就跳过去了,下面的路径都是Qt源码目录里的。

示例环境:DragonFly BSD 3.6.0(因DragonFly的dports是基于FreeBSD的ports树,所以下面的操作也适用于FreeBSD,详细附在正文后)

修改源码

Qt 5.2.0没有DragonFly BSD的mkspec,可以在FreeBSD的mkspec基础上做点改动来适配dfly,此外qtbase的qfileselector.cpp也需要做一个dirty patch不然编译会出错。

Continue reading “DragonFly BSD编译安装Qt 5.2.0”

Visual Studio 2012下的OpenCV 2.4.7安装过程

邮箱已经收到了Visual Studio 2013的升级通知,但是很多软件如OpenCV、Qt等都只有VS2012的预编译库,还是懒得升级了(除非VS支持C++11了)。

网上搜了一些VS2012(或VS2010)安装OpenCV的教程,抄来抄去很不规范……还是直接参考官方的安装过程靠谱,你可以把本文当作一小部分官方安装指南的中文翻译。

Continue reading “Visual Studio 2012下的OpenCV 2.4.7安装过程”

NetBSD安装awesome窗口管理器

好久没玩NetBSD了,今天在VirtualBox 4.3里装了一个NetBSD 6.1.2,这次要搞个WM玩一下~瞄准的是近期出镜率略高的awesome

NetBSD下Awesome的编译安装

awesome在pkg仓库里没有,pkgsrc预编译的只有一个老版本(有问题用不了),所以必须自己下载pkgsrc来编译。pkgsrc的下载以前说过这里就不说了。

为了节约时间,先用pkgin把编译awesome的依赖包能装上的都先装上了。

Continue reading “NetBSD安装awesome窗口管理器”

Fedora 19编译内核(打BFS+BFQ+UKSM补丁)简易指南

自定义内核显然就是开源的好处之一,不过内核编译属于高级用户(Advanced Users)的范畴,newbies慎入。下面以Fedora 19为例(Fedora 14及更高版本都是通用的内核编译方法,以后如果有变动了我会更新)。

准备工作

终端运行,

su -c 'yum install rpmdevtools yum-utils ncurses-devel'

我的系统装在SSD上,比较小,所以我把RPM的编译主目录放在移动硬盘(/media/c/rpmbuild)上。编辑~/.rpmmacros,修改第一行为:

Continue reading “Fedora 19编译内核(打BFS+BFQ+UKSM补丁)简易指南”

Slax的QtWebKit 2.3及QupZilla浏览器

不知道Slax是什么?一个小型的模块化的KDE桌面Linux发行版。

最近又跟浏览器干上了,本来就是一个小型发行版,所以不想塞一个Firefox、Chrome、Opera这种重型浏览器。之前一直在用rekonq浏览器,后来又来试了一试QupZilla,一样的QtWebKit内核,QupZilla的浏览体验倒好多了,很顺畅,没有Rekonq那种加载时一卡一卡的感觉。不过QupZilla的sb包有2MB,而Rekonq只有800+KB。

现在Slax搭载的Qt 4.8.4,所以QtWebKit是官方仓库里比较老的QtWebKit 2.2,WebKit版本好象是534.xx,不支持桌面通知、WebGL、拼写检查等功能(大部分和HTML5相关)。不过现在好了,我上传了QtWebKit 2.3的buildscript,并且传了一个叫作qupzilla-next的buildscript,依赖新版的WebKit编译。

对于想在Slax下获得更好的浏览体验的朋友,在终端下执行:

slax activate qupzilla-next

前几天Digia发布了Qt 4.8.5,包含最新的WebKit,所以如果Slax能在下一个版本更新Qt的话,就不需要额外加载qtwebkit-23这个包,可以方便很多。 大误,Qt 4.8.5只是小幅度更新QtWebKit,还是2.2……