2021年3月30日 星期二

2021年3月24日 星期三

[linux] 增加動態函式庫搜尋路徑

 預設的搜尋路徑有

/lib/, /usr/lib/

在這裡面加入library只需呼叫

$ ldconfig

去更新/etc/ld.so.cache的內容

如果新增的lib在其他地方,有兩個選擇

1. 暫時的方法

在環境變數LD_LIBRARY_PATH加入資料夾路徑

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/myapp/lib

1.1 將上面的指令加入

  ~/.bashrc

這樣每次打開shell都會被執行

2. 永久的方式

/etc/ld.so.conf.d/中加入.conf檔案

$ touch opencv.conf
$ echo "/user/local/lib" > opencv.conf
$ sudo ldconfig


ps.

$ ldconfig -v

看ldconfig連結的librarys

$ ldconfig -n

看ldconfig連結的librarys,但排除預設目錄


2021年3月23日 星期二

[git] 完全回復成未修改狀態

清除未追蹤檔案

 git clean -fx

(x表示連同ignored files)

可以先用 

git clean -fxn

測試

還原git controlled files

git reset --hard

back in time -qt

之前都用time shift 但因為看time shift的readme說 time shift主要用來回覆系統檔,要完整回朔可以用back in time

但第一次用就悲劇...

因為在做備份的時候沒有掛一個share槽 (/mnt/share/),但還原的時候不小心掛了,又選清除多餘的檔案,於是share整個被清空(幸好不是很大的備份碟)

所以用 backintime 記得把 /dev/, /mnt/之類的目錄加到例外

[Linux Shell Script] sed 在指定行前面加字元

最近因為寫安裝realsense sdk的script, 需要將原本的script部分註解掉,找到這個sed指令


 sed -i '308,320 s/^/# /1' fileName

註解 308~320行

-i : 寫入原檔

308,320: 範圍 308 ~320

s: 取代

^: pattern前的空字元 ($ 表示pattern 的空字元)

1: 作用在第一個matched pattern (g表示所有)

sed -i '1 s/^/# /1 ; 3 s/^/# /1' test

註解 1,3行

sed -i 's/# //g' test

刪掉 test 中所有 '# '

ref:

https://terryl.in/zh/linux-sed-command/

regular express

https://www.gnu.org/software/sed/manual/sed.html#sed-regular-expressions


ps. 如果要取代檔案中的字

sed -i 's/WORD_TO_REPLACE/replacer/g' fileName


會將

abcdWORD_TO_REPLACEabcdWORD_TO_REPLACE123

變成

abcdreplacerabcdreplacer123


2021年3月9日 星期二

bazel cache

 最近在搞Isaac, 他用bazel這個build tool聽說是很scallable的tool

but...他的cache真的是神大,build幾個Isaac sample,cache了5xGB... SSD都塞暴了

2021年3月8日 星期一

[Isaac install]nvidia driver's location

Isaac 官網上有提到要自行增加環境變數,讓unity可以抓到nv driver

在~/.bashrc最後新增

export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json

但實際去找/usr/share/vulkan/icd.d/資料夾找不到nvidia_icd.json

後還發現在我的NB上是在/etc/vulkan/icd.d/nvidia_icd.json

實務上可以先updatedb後去locate nvidia_icd.json

2021年3月7日 星期日

[install cuda] install gcc

$ sudo apt update

$ sudo apt install build-essential

install manuals

$  sudo apt-get install manpages-dev

check install

$ gcc --version


install cuda -- turn off Nouveau

 before install cuda,Nouveau need to be turned off

create a new text file

$ sudo nano /etc/modprobe.d/blacklist-nouveau.conf

in blacklist-nouveau.conf

 

blacklist nouveau
options nouveau modeset=0
 
then, rebuild kernel and reboot
$ sudo update-initramfs -u
$ sudo reboot 

after reboot make sure Nouveau have been shut down
$ lsmod | grep nouveau

[pre noted] 將linux移到其他硬碟

 因為公司筆電的ssd很小(128G)上面大只夠run一個linux

  1. Create an ext4 partition and a swap partition on the new drive.

  2. Boot from LiveUSB.

  3. Mount the old Ubuntu partition to some directory, mount the new one to some other directory.

  4. Copy all files from the old one to the new one using cp -a command.

  5. Install grub to the new drive.

  6. Update /etc/fstab with new UUIDs.

在已有ubuntu的狀況下免cd/usb安裝其他inux

用 grml-rescueboot套件

$ sudo apt-get install grml-rescueboot

安裝完成後會產生

/boot/grml資料夾

將iso移動到 /boot/grml

$ sudo mv <.iso> /boot/grml

更新grub

$ update-grub

重開機
$ reboot
這時候grub menu中就會多一個 grml-rescueboot 的選項

但這樣做會有個問題就是installer無法在已掛載的磁碟上做改變分割磁區的動作,如果只有一個實體磁碟的話會需要先割好再安裝

bazel geetting sart

 最近因為用到Nv 的 Isaac, 他用的是bazel這個編譯器

之前沒接觸過,查了一下發現他原本是google內部用的編譯器,後來release出來產生的

但從他的官網進去要getting start卻一直是404找不到網頁

一直以為是有捨麼梗

後來檢查URL才發現他連結的URL是

https://docs.bazel.build/guide.html/getting-started.html

但應該要連到

https://docs.bazel.build/getting-started.html

才對...orz