使用自己的toolset, c++11, c++0x來編譯boost

使用自己的toolset, c++11, c++0x來編譯boost

在解壓出的boost文件夾中tools/build/v2/user-config.jam文件中添加如下configuration

# Configure gcc-4.8
using gcc 
    : 4.8 
    : "/usr/bin/g++-4.8"
    : <cxxflags>"-std=c++11 -march=native -flto -O3" <linkflags>"-flto -O3"                                       
;

然後,使用./b2 toolset=gcc-4.8來編譯BOOST即可。

[轉]Ubuntu下安装配置JDK

Ubuntu下安装配置JDK

Read more

"install_failed_invalid_apk" error in android development

I just set out for Android development and I found I'm always getting this error "INSTALL_FAILED_INVALID_APK" when debuging the apk on device.

The Fatal Keypoint: Package name started with underscore character.

Solve: Rename the Package.

 

Explanation:

A Package cannot start with numbers. A Project that starts with numbers as it's initials, for example: 01Test, the Package name will be renamed with an underscore('_') character ----> Package name: com.example._01Test

However, Android cannot parse the package name starting with underscores, so it becomes an invalid apk.

 

問題的萌點:Android包名不能以下劃綫為首字母。

解決方式:重命名。

解釋:例如如果工程名是01Test, 包名由於不能以數字起始,所以加了一個下劃綫 ----> 包名:com.example._01Test。然而Android不能解析這樣的包名,所以就變成了invalid apk了。

如何在C++03中模擬C++11的右值引用std::move特性

最後修改時間:2013.03.19 -- 13:08

引言

衆所周知,C++11的新特性中有一個非常重要的特性,那就是rvalue reference,右值引用。
引入它的一個非常重要的原因是因爲在C++中,常常右值,通俗地講"在等號右邊的"臨時變量或者臨時對象,我們是無法得到它的修改權限的。

由於類的構造和析構機制,往往產生的臨時變量或臨時對象的拷貝構造及析構,會帶來不少的時間、資源消耗。
也同樣由於這樣的限制,有不少C++程序員依然保有一部分C風格的寫法,例如將A = factory(B, C);之中的A,以函數引用參數的形式傳入等等。但在C++11之後,我們可以完全保留C++的寫法,將右值明顯指出,就可以完成"直接獲得臨時對象"的資源的權限,例如A = std::move(B); 或者A = factory(B, C);,這時候就"幾乎完全"省去了拷貝的過程,通過直接獲取由factory(B, C)造出的臨時對象中的資源,達到省略拷貝的過程,最終析構的臨時對象,實際上只是一具空空的皮囊。

Read more

ZSH中禁止autocorrect

如果你在zsh中鍵入的命令中有誤,它會提示你是否要correct。

比如:

如果你在zsh中鍵入ks,它會提示你是否要換成ls,如下:

% ks
zsh: correct ‘ks’ to ‘ls’ [nyae]?

如果你覺得特別麻煩,你可以整體禁用所有的autocorrect。

在~/.zshrc中添加如下代碼:

unsetopt correct_all

注:更新版的ZSH,使用的option是這樣的

unsetopt correct

即可達到你的要求。

 

如果你只是想某些情況下不使用autocorrect,那麼你可以試試使用alias,比如:

alias vim = 'nocorrect vim '