Linux     i   g e   s t        d
趣旨ソースのコンパイルが怖くなくなるプログラムが動く仕組みをできるだけ低レベルで理理解する
helloworld!
set-‐‑‒upMacOSX:  install  XCodeLinux(debian/ubuntu):  aptitude  install  build-‐‑‒essential
Letʼ’s  compilehello  world!!https://github.com/dot/helloworld  (簡単なC/C++の解説)
C/C++cc/gcc/c++/g++コンパイラとインタプリタとVMと
compilerプリプロセス(gcc  -‐‑‒E)コンパイル(gcc  -‐‑‒S)アセンブル(gcc  -‐‑‒c)リンク
linkerstatic/dynamic  link何をやってるか⾒見見てみよう  otool  -‐‑‒L  (mac)/ldd  (linux)
Makefileべんり  同じコマンド何回も打つのにプログラマな  ら⾺馬⿅鹿鹿正直にコマンドうたないよね?omake/nmake/rake/ninja
debuggdbtrace(strace/dtrace)SystemTap
testingunittest  cppunit  gtest
linux
Operating  Systemshell+library+commands+X+  ....distribution
KernelKernel  ≒  Linuxdevice   CPU/GPU/Memory/HDDdevice-‐‑‒driverscheduling,  virtualize...ソフトウェアとハードウェアの仲介役
system  call  why  c/c++?deviceを動かすようにkernelに命令令するread/write/open/close...
Library  the  otherprintf/strlenlibc(標準Cライブラリ)  linked  by  default
manman  <section>  xxxman  1  (command)man  2  (system  call)man  3  (library)  etc.  man  5  fstab  -‐‑‒>  man  man
 File  Process  Stream
File  ls     file/dir/symlink/device  file/procpermissionfilesystem
Processps  aux  kernelやinitもprocesssignal  Ctrl-‐‑‒C(SIGINT)  kill  -‐‑‒HUP  xxxx
signalsignalsegmentation  fault  SIGSEGVprocess間通信
Streambyte  array  device  pipe  network
user/groupls  -‐‑‒lpermission      process/filepasswd/group  filecredential
standard  I/Ostdin/stdout/stderr  streamの⼀一種pipe
directory  treeFSH(Filesystem  Hierarchy  Standard)  /  /bin,  /sbin  /lib
/usrsrcincludesharelocal
/varspoolrunlog
rootetcdevprocbootroottmphome
memoryCPU  &  memmoryvirtual  memory/  physical  memoryswap  memory,  paging...
moredeepertopics
hardware  architecturec/c++  programmingnetwork
ふつうのLinuxプログラミング
Upcoming SlideShare
Loading in …5
×

ふつうのLinuxプログラミング

2,312 views

Published on

社内勉強会用資料

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,312
On SlideShare
0
From Embeds
0
Number of Embeds
182
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

ふつうのLinuxプログラミング

  1. 1. Linux i g e s t d
  2. 2. 趣旨ソースのコンパイルが怖くなくなるプログラムが動く仕組みをできるだけ低レベルで理理解する
  3. 3. helloworld!
  4. 4. set-‐‑‒upMacOSX:  install  XCodeLinux(debian/ubuntu):  aptitude  install  build-‐‑‒essential
  5. 5. Letʼ’s  compilehello  world!!https://github.com/dot/helloworld (簡単なC/C++の解説)
  6. 6. C/C++cc/gcc/c++/g++コンパイラとインタプリタとVMと
  7. 7. compilerプリプロセス(gcc  -‐‑‒E)コンパイル(gcc  -‐‑‒S)アセンブル(gcc  -‐‑‒c)リンク
  8. 8. linkerstatic/dynamic  link何をやってるか⾒見見てみよう otool  -‐‑‒L  (mac)/ldd  (linux)
  9. 9. Makefileべんり 同じコマンド何回も打つのにプログラマな ら⾺馬⿅鹿鹿正直にコマンドうたないよね?omake/nmake/rake/ninja
  10. 10. debuggdbtrace(strace/dtrace)SystemTap
  11. 11. testingunittest cppunit gtest
  12. 12. linux
  13. 13. Operating  Systemshell+library+commands+X+  ....distribution
  14. 14. KernelKernel  ≒  Linuxdevice CPU/GPU/Memory/HDDdevice-‐‑‒driverscheduling,  virtualize...ソフトウェアとハードウェアの仲介役
  15. 15. system  call  why  c/c++?deviceを動かすようにkernelに命令令するread/write/open/close...
  16. 16. Library  the  otherprintf/strlenlibc(標準Cライブラリ) linked  by  default
  17. 17. manman  <section>  xxxman  1  (command)man  2  (system  call)man  3  (library) etc.  man  5  fstab  -‐‑‒>  man  man
  18. 18.  File  Process  Stream
  19. 19. File  ls file/dir/symlink/device  file/procpermissionfilesystem
  20. 20. Processps  aux kernelやinitもprocesssignal Ctrl-‐‑‒C(SIGINT) kill  -‐‑‒HUP  xxxx
  21. 21. signalsignalsegmentation  fault SIGSEGVprocess間通信
  22. 22. Streambyte  array device pipe network
  23. 23. user/groupls  -‐‑‒lpermission process/filepasswd/group  filecredential
  24. 24. standard  I/Ostdin/stdout/stderr streamの⼀一種pipe
  25. 25. directory  treeFSH(Filesystem  Hierarchy  Standard) / /bin,  /sbin /lib
  26. 26. /usrsrcincludesharelocal
  27. 27. /varspoolrunlog
  28. 28. rootetcdevprocbootroottmphome
  29. 29. memoryCPU  &  memmoryvirtual  memory/  physical  memoryswap  memory,  paging...
  30. 30. moredeepertopics
  31. 31. hardware  architecturec/c++  programmingnetwork

×