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

Linking Error

Linking Error

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