原创 git commit 規範化信息提交工具

靈感來源於這篇文章 1. 標準化 commit message 規範且有意義的提交記錄,有助於追蹤代碼修改和查看歷史記錄 現在支持以下九種類型(參考 Angular 規範的 commit message) feat: 新功能(featu

原创 線程創建 pthread_create 中自定義參數注意事項

1. 函數原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr,          void *(*start_routine) (void *), void

原创 Linux 最簡單內核模塊 Hello World 示例

注:如果想要按照本篇實踐,需要有能運行的arm開發板和對應版本的內核(如果想在Linux主機上編譯運行,請參考文末附1) 1. 在相應版本內核的driver目錄下新建如下文件: 其中文件代碼如下:/* hello.c */ #inclu

原创 gcc/g++/make 編譯信息帶顏色輸出

如果編譯一個項目錯誤警告太多,非常不好找,所以非常希望輸出信息可以帶有顏色。 可是 gcc 4.9.0 之前的版本並不支持,很多情況下是不能替換編譯器的,比如使用交叉編譯器, 也可以使用 colorgcc,但我覺得不是特別好,需要配置,如果

原创 linux 程序、動態庫、靜態庫內部添加版本號和編譯時間

給程序和庫添加版本號和庫,有利於維護和升級。 當然你可以在文件名上體現,比如有個程序叫 yun,文件名寫爲 yun_1.0.2,但這個需要每次手動維護,而且不能100%確保當前程序就是那個版本。所以,把版本號體現在程序內部,是一個不錯的選擇

原创 Go -v 顯示版本號和編譯時間示例

C語言想要 -v 顯示編譯時間,可以使用 _DATE_, _TIME_ 這兩個宏, 而 Go 沒有類似的常量,當然可以使用 Go 調用 C 代碼(這是另一種方法) 然而,更好的方法是使用 go build 的 -ldflags 參數 原理如

原创 Linux gcc for 循環中 i=i++ 會造成死循環問題及 ++i / i++ 彙編分析

在把 Windows 程序移植到 Linux 時遇到了死循環,最後定位到了類似這種的語句 for (i = 0; i < 1; i = i++), 別問我是誰寫的,爲什麼這麼寫(淚目!)。 根據我自己的感覺, i = i++ 應該等價於 i