Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linking Error

Linking Error

Avatar for Ching Yi Chan

Ching Yi Chan

March 03, 2015
Tweet

More Decks by Ching Yi Chan

Other Decks in Programming

Transcript

  1. Develop With Docker ௰ڐίώʡჿ • 搞雲端、寫 Java、寫 Python、ʔซdШɦ੻寫 C •

    ⾃自⼰己的 CDN ⾃自⼰己建 • ⾃自⼰己的雲端播放器⾃自⼰己做
  2. Develop With Docker • 同事A:裝不起來啊~~ • 同事B:怎麼弄的!? • 同事C:剛剛還可以的啊!!! •

    同事X:幫我弄⼀一下 • 同事Z:Linux … 不熟哩~ ๟௪ක೯ᐑྤ ే ߮
  3. Develop With Docker ᒔϞᇜᙇ໔͉ • 年年向⿊黑道宣戰的男⼈人 • 這是 qrtt1 第

    N 次向 AutoTools 宣戰 • 別說 AutoTools 了,連 Makefile 都寫得ʔҜٜൖ • 如何避免能⼒力有限形成的 Copy & Paste 世界奇觀: • Makefile.vendor[a-zA-z0-9]+
  4. Develop With Docker пɛމҞᆀʘ͉ • [打算] 在 VM 環境好開發環境打包給同事使⽤用 •

    [vendor A] 要⽤用 fedora 8 裝他們的 toolchain • [vendor B] 要⽤用 ubuntu 裝他們的 toolchain • [vendor N] 要⽤用 xxxxxx 裝他們的 toolchain • ˂૨ٙ到底需要做幾個開發環境!?
  5. Develop With Docker ౤ࣩ • 建個 VM 環境,把所有東⻄西都安裝去上,再 export 發給需要開發的同事

    • VM 開發環境的缺點 • 檔案較佔空間 • 執⾏行需要的資源較多 • 部分更新較不⽅方便
  6. Develop With Docker • 傳統的 Servers 管理 • 使⽤用⼯工⼈人智慧,⼀一⼀一建⽴立需要的 Server

    • 每次需耗損較多的⼯工⼈人時間,品質依⼯工⼈人⼼心情⽽而定 • 雲端⾵風格的 Servers 管理 • 使⽤用宣告式腳本,描述應該建⽴立的 Server • 使⽤用⼯工具依腳本建⽴立,品質相對穩定 Σථ၌࠾ᗝ
  7. Develop With Docker *OGSBTUSVDUVSFBT$PEF • 基礎建設即為程式碼,例如雲端服務 AWS CloudFormation; DevOps ⼯工具:

    Ansible, Chef, Puppet • 程式碼 • ⽅方便透過版本控制系統管理 • 狀態容易 reproduce • 最終成果可拋式(Disposable)
  8. Develop With Docker • Vagrant: https://www.vagrantup.com/ • Provision ⼯工具:依腳本建⽴立出需要的 VM

    環境 或 Docker Container • Docker: https://www.docker.com/ • Linux Container 管理⼯工具:依腳本建出需要的 Docker Image ක೯ᐑྤBT$PEF
  9. Develop With Docker %PDLFS • Docker 官網 
 https://www.docker.com/
 https://www.docker.com/tryit/

    Docker 練習環境 • The Docker Ecosystem: An Introduction to Common Components
 http://bit.ly/1BE2WIc • Docker 101 - Intro to Docker 
 http://slidesha.re/1LxLOpD • 深⼊入浅出Docker(⼀一):Docker核⼼心技术预览
 http://bit.ly/1LxLRBN
  10. Develop With Docker • build a image from the Dockerfile

    • run a container from the image • show the history of a image • commit changes of a container to a new image • stop, start, rm a container; rmi a image %PDLFS$PNNBOE
  11. Develop With Docker %PDLFSGJMF • Image 建⽴立腳本 FROM ubuntu:14.04.1 RUN

    apt-get update -y RUN apt-get install -y cmake RUN apt-get install -y vim RUN apt-get install -y wget tree ADD scripts/bashrc /.bashrc WORKDIR /data
  12. Develop With Docker <˖΁>ႡЪක೯ᐑྤ • 設想⼀一下⼀一般的⽂文件會看到什麼... • 啟動 docker for

    vendor A • 把 vendor A 的 toolchain.tgz 解到 /opt/vendorA/ • 開始編譯 XXX Library ⾄至 /opt/vendorA/XXX • 開始編譯 YYY Library ⾄至 /opt/vendorA/YYY • 把它 tar 起來,上傳⾄至 s3 後續使⽤用 WTF
  13. Develop With Docker ක೯ᐑྤ • 安裝 toolchain 與相關開發⼯工具 • 編譯相依

    Libraries • prefix: /opt/vendor • 將上述需求整理成 script 與 Dockerfile • docker build -t acme/vendor . • 接著我們能這麼使⽤用 • docker run -ti acme/vendor /bin/bash …
  14. Develop With Docker ਖ਼ࣩႾп໔͉ • 進⼊入 docker container • docker-run.sh

    vendor • docker run -ti acme/vendor /bin/bash • 編譯專案 • docker-build.sh vendor • docker run -ti acme/vendor /bin/bash build.sh
  15. Develop With Docker $.BLF • Don’t Be Autofools • 模組化設計,需要

    OOO 功能就引⽤用 OOO 模組 • 學習撰寫、改寫 find_package • 開發中的 library 常在⾮非系統預設路徑,適度的改 寫與客製化是必要的。http://bit.ly/1DmrtO3 • 範例:FindLibAO.cmake http://bit.ly/1DmtDgB
  16. Develop With Docker • CMake 2.6.0 後開始⽀支援 Cross compiling
 http://bit.ly/1DmsBRN

    • 將需要 Cross Compiling 設定的變數定義出來,並能 將設定獨⽴立在專屬的檔案內 $SPTT$PNQJMJOH cmake \ -DCMAKE_TOOLCHAIN_FILE=toolchain_vendor.cmake . One vendor, One toolchain file