2019年10月10日 星期四

[Qt] qtchooser 基本操作

qtchooser 是一套可以讓使用者選定 qt qmake 版本的 package

開發環境若有多套 Qt 同時使用中,可以快速在不同版本間切換

操作指令

1. 顯示所有支援的 qt 版本
qtchooser -list-versions

2. 查看當前支援的版本
qtchooser -print-env

輸出結果:
QT_SELECT="default"
QTTOOLDIR="/usr/lib/x86_64-linux-gnu/qt4/bin"
QTLIBDIR="/usr/lib/x86_64-linux-gnu"

3. 手動新增版本
qtchooser -install ${list 上的顯示名稱} ${qmake路徑}

例如:
qtchooser -install qt5.9.4 ~/Qt/5.9.4/gcc_64/bin/qmake

4. 指定 qtchooser 選定的版本
export QT_SELECT=qt5.9.4

# 透過 qtchooser -print-env 來確認是否有更新成功

指令 qmake 就會是對應的 qt version 的

2019年9月24日 星期二

[Valgrind 學習筆記] 初探 Valgrind

在系統上安裝 Valgrid

sudo apt-get install valgrind

執行 Valgrid

G_SLICE=always-malloc G_DEBUG=gc-friendly  valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log $(which <program>) <arguments>


執行過程中,log 會被導出到 valgrid.log

後續再研究此 log 的內容即可


Reference:
1. Valgrind
2. Valgrind man page
3. 应用 Valgrind 发现 Linux 程序的内存问题
4. Running GLib Applications

2019年3月6日 星期三

[Linux 學習筆記] 透過 command line 調整 CPU 頻率


1. 查看當前 CPU 0 的使用頻率與最大、最小頻率
# cd /sys/devices/system/cpu/cpu0/cpufreq
# cat cpuinfo_cur_freq
# cat cpuinfo_max_freq
# cat cpuinfo_min_freq


2. 查看 CPU 0 可用頻率
# cd /sys/devices/system/cpu/cpu0/cpufreq
# cat scaling_available_frequencies

==可能顯示結果==
396000 792000 996000


3. 查看 CPU 0 可用的 CPU policy
# cd /sys/devices/system/cpu/cpu0/cpufreq
# cat scaling_available_governors

==可能顯示結果==
interactive conservative ondemand userspace powersave performance



查看所有 CPU 當前 policy
# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

==可能顯示結果==
powersave
powersave
powersave
powersave


4. 更改所有 CPU 當前 mode (假設有 4 顆 CPU)
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
# echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
# echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
此時可查看 current, max, min 頻率來確認是否有更新

5. 手動更改頻率
# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# echo 792000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq


2019年2月26日 星期二

[Linux 學習筆記] 如何找到系統上所有可用 module

How to find all available modules on system


  1. Find those loaded module
    1. Use command "lsmod"
  2. Find a specific module name and its usage
    1. Check this website: LKDDb: Linux Kernel Driver DataBase
  3. Find all modules which can be used
    1. cd /lib/modules/
    2. "uname -r"
      1. To check Linux kernel release
    3. cd 4.9.11-myimx6-g7c9eb82-dirty/
      1. Pick this kernel to check all available modules
    4. find . -name *.ko
      1. To list all available modules
  4. Reference

2019年2月25日 星期一

[Linux 學習筆記] 停用指定多核心

現今機器架構常常會使用多核心來提升效能

以我的機器為例,開啟 Linux ,透過 nproc 指令可以查詢機器上有幾個核心,顯示為 4,表示 4 核心。

再使用 htop 可以觀察當前各個核心的使用數據


有時測試上,需要在較嚴苛的環境下執行,可以透過以下指令把指定核心停用

1. 查看當前機器核心名稱

ls /sys/devices/system/cpu/


2. 停用第三、第四個核心

echo 0 > /sys/devices/system/cpu/cpu2/online
echo 0 > /sys/devices/system/cpu/cpu3/online







3. 查看核心數

nproc


4. 重新啟用第三、第四個核心

echo 1 > /sys/devices/system/cpu/cpu2/online
echo 1 > /sys/devices/system/cpu/cpu3/online 

2019年1月19日 星期六

[cmake 學習筆記] 如何設定 GDB debug flag (-g)

方法一: 在 cmake 指令下增加參數


cmake -DCMAKE_BUILD_TYPE=Debug <路徑與其他參數>



cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo <路徑與其他參數>


方法二: 修改 CMakeLists.txt


set(CMAKE_BUILD_TYPE Debug)



set(CMAKE_BUILD_TYPE RelWithDebInfo)


--
build type 為 Debug 會產生具有 debug symbols 與未最佳化的 code
build type 為 RelWithDebInfo 會產生具有 debug symbols 與最佳化的 code

2018年11月27日 星期二

[Linux Shell Programming] 批次改檔名

常常遇到需要批次把目錄下的所有檔案名稱的某個前綴字或後綴字去除後,以此重新命名檔案,可參考以下流程:
  1. 列出目錄下所有檔案並用 grep 找出目標檔案
  2. 使用 for loop 爬過每個檔案名稱並使用 sed 得到另外一個名稱
程式碼:


1
2
3
4
5
6
7
8
files=$(ls | grep '@2x.png$')

for f in $files
do
    echo $f
    g=$(echo $f | sed 's/@2x//g')
    echo $g
done

以上是核心概念,接下來再小修改程式滿足特定需求就可以了