COSCUP-2020-Linux 軟體組裝工和他的工具們

COSCUP-2020-Linux 軟體組裝工和他的工具們

老梗,組裝

E48bd6aeb77b88d5762cd5d96e2c397d?s=128

Wen_Liao

July 28, 2020
Tweet

Transcript

  1. Linux 軟體組裝工和他的工具們 Wen Liao

  2. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  3. • 領域 ◦ Linux 使用者 ◦ Linux system programming 開發者

    • 程度 ◦ 初學者 目標觀眾
  4. Who Am I? • Wen Liao • 工作經驗 ◦ 系統廠

    ▪ 組裝一 ▪ 組裝二 ▪ … ◦ 軟體套件供應商 ▪ 組裝一 ▪ 組裝二 ▪ … ◦ 軟體開發商 ▪ 組裝一 ▪ 組裝二 ▪ …
  5. 小津安二郎 我是賣豆腐的,所以 我只做豆腐。

  6. Wen Liao 我是賣組裝的,所以 我只做組裝。

  7. http://gunpladustmemories.tumblr.com/post/99817561005/getting-started-with-gundam-and-gunpla

  8. https://imgur.com/gallery/w2KHZ/new

  9. 什麼是組裝? • 有現成的套件 • 不同的平台

  10. 現實的生活比喻 • 你是外膳廚師,老闆只給幾個固定食材,規定只能一 道菜。 ◦ 工具廚房都由客戶準備

  11. 一鍵搞定 最爽的狀態

  12. 工具齊全,但是放置位地方不同 (path) 挑戰程度:易

  13. 廚具亂放,花很多時間在找廚具。 (link library) 挑戰程度:中

  14. 缺了工具,但是附近有餐具行可以買 (自己編缺的open source library) 挑戰程度:中

  15. 沒有工具,還規定要野炊 (移植到異質的OS) 挑戰程度:難

  16. Callback function怎麼找? 如何找到symbol是放在那一個檔案? 指令煩雜像咒語打起來很煩 …

  17. 重點是? • 了解你的食材 • 了解你的食譜 • 了解你的廚具

  18. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  19. $ lsb_release -a No LSB modules are available. Distributor ID:

    Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal $ gvim --version VIM - Vi IMproved 8.1 (2018 May 18, compiled Apr 15 2020 06:40:31) Included patches: 1-2269 $ gcc --version gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 測試環境
  20. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  21. vgod 大大的vim cheat sheet demo http://blog.vgod.tw/2009/12/08/vim-cheat-sheet-for-programmer

  22. Live Demo

  23. • vim ◦ Demo last slide ◦ Vertical visual mode

    ◦ ?iw ◦ Plugins ▪ Python lint Demo
  24. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  25. None
  26. • 字串相關 ◦ ack/grep ▪ 找出assign 變數 ▪ -l -n

    -r • Log 觀察 ◦ less ◦ tee ◦ script demo
  27. • 其他 ◦ mc ◦ meld ◦ tig ◦ terminator

    ◦ apt-file demo
  28. • vim: cscope + ctags • Doxygen demo

  29. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  30. • List − 條件式 • && • || − 無條件式

    • ; 一行執行多個commands (1)
  31. 屠宰 烹煮 $ 屠宰 豬隻| 烹煮梅干扣肉 我是梅干扣肉 Pipe: 把前面的輸出轉給後面處理

  32. • find | grep lib.*\\.a$ − 找出目錄下面所有lib開頭.a結尾的檔案 find grep 列出出目錄下面所有檔案

    從前面輸出過濾出要找的字串 範例
  33. • 條件式連續執行 • 檔案搜尋 • 迴圈處理目錄內所有東西 ◦ 複製 ◦ 轉檔

    • find + exec Demo
  34. Outlines • 前言 • 測試環境 • 編輯器 • Code trace

    • 練續技 - Power of shell • 和ELF Binary 裝熟
  35. Demo time

  36. • nm/gcc ◦ find | grep *\\.a$ | xargs nm

    -A | grep ◦ ld --verbose | grep SEARCH | tr "; " "\n\r" ◦ echo "" | gcc -E -xc - -dM -v ◦ gcc --save-temps • strace • LD_DEBUG=all
  37. Q & A