linking error

30
Develop With Docker Linking Error by qrtt1 HELP !!!

Upload: ching-yi-chan

Post on 14-Jul-2015

290 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Linking error

Develop With Docker

Linking Errorby qrtt1

HELP !!!

Page 2: Linking error

Develop With Docker

關於標題

Page 3: Linking error

Develop With Docker

最近在忙什麼• 搞雲端、寫 Java、寫 Python、不想,但又得寫 C

• ⾃自⼰己的 CDN ⾃自⼰己建

• ⾃自⼰己的雲端播放器⾃自⼰己做

Page 4: Linking error

Develop With Docker

今天要講什麼• ⾃自⼰己的雲端播放器⾃自⼰己建之⼀一⼩小部分

http://bit.ly/1ByJSVZ

Page 5: Linking error

Develop With Docker

編譯是個苦工

Internet of Things

Cross Compilation

Page 6: Linking error

Develop With Docker

• 同事A:裝不起來啊~~

• 同事B:怎麼弄的!?

• 同事C:剛剛還可以的啊!!!

• 同事X:幫我弄⼀一下

• 同事Z:Linux … 不熟哩~

準備開發環境

Page 7: Linking error

Develop With Docker

還有編譯腳本• 年年向⿊黑道宣戰的男⼈人

• 這是 qrtt1 第 N 次向 AutoTools 宣戰

• 別說 AutoTools 了,連 Makefile 都寫得不忍直視

• 如何避免能⼒力有限形成的 Copy & Paste 世界奇觀:

• Makefile.vendor[a-zA-z0-9]+

Page 8: Linking error

Develop With Docker

助人為快樂之本• [打算] 在 VM 環境好開發環境打包給同事使⽤用

• [vendor A] 要⽤用 fedora 8 裝他們的 toolchain

• [vendor B] 要⽤用 ubuntu 裝他們的 toolchain

• [vendor N] 要⽤用 xxxxxx 裝他們的 toolchain

• 天殺的到底需要做幾個開發環境!?

Page 9: Linking error

Develop With Docker

提案• 建個 VM 環境,把所有東⻄西都安裝去上,再 export 發給需要開發的同事

• VM 開發環境的缺點

• 檔案較佔空間

• 執⾏行需要的資源較多

• 部分更新較不⽅方便

Page 10: Linking error

Develop With Docker

各式格樣的組合

開發環境 For Vendor [a-zA-z0-9]+

編譯腳本 for Vendor [a-zA-z0-9]+

X

Page 11: Linking error

Develop With Docker

問題摘要• 如何免除開發環境建置、維護的負擔

• toolchain 更新

• 相依 library 更新

• 如何維護各種 toolchain 的 Makefile

Page 12: Linking error

Develop With Docker

• 傳統的 Servers 管理

• 使⽤用⼯工⼈人智慧,⼀一⼀一建⽴立需要的 Server

• 每次需耗損較多的⼯工⼈人時間,品質依⼯工⼈人⼼心情⽽而定

• 雲端⾵風格的 Servers 管理

• 使⽤用宣告式腳本,描述應該建⽴立的 Server

• 使⽤用⼯工具依腳本建⽴立,品質相對穩定

向雲端借鏡

Page 13: Linking error

Develop With Docker

Infrastructure as Code

• 基礎建設即為程式碼,例如雲端服務 AWS CloudFormation; DevOps ⼯工具: Ansible, Chef, Puppet

• 程式碼

• ⽅方便透過版本控制系統管理

• 狀態容易 reproduce

• 最終成果可拋式(Disposable)

Page 14: Linking error

Develop With Docker

• Vagrant: https://www.vagrantup.com/

• Provision ⼯工具:依腳本建⽴立出需要的 VM 環境或 Docker Container

• Docker: https://www.docker.com/

• Linux Container 管理⼯工具:依腳本建出需要的 Docker Image

開發環境 as Code

Page 15: Linking error

Develop With Docker

Docker• Docker 官網

https://www.docker.com/ https://www.docker.com/tryit/ Docker 練習環境

• The Docker Ecosystem: An Introduction to Common Componentshttp://bit.ly/1BE2WIc

• Docker 101 - Intro to Docker http://slidesha.re/1LxLOpD

• 深⼊入浅出Docker(⼀一):Docker核⼼心技术预览 http://bit.ly/1LxLRBN

Page 16: Linking error

Develop With Docker

Docker vs VM

http://bit.ly/1A6ETAd

Page 17: Linking error

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

Docker Command

Page 18: Linking error

Develop With Docker

Dockerfile• 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

Page 19: Linking error

Develop With Docker

Any Question Before Demonstration Docker Basic Commands

Page 20: Linking error

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

Page 21: Linking error

Develop With Docker

開發環境

我只想要⼀一個

build-image.sh

Page 22: Linking error

Develop With Docker

Any Question Before Demonstration Build Images For VENDORs

Page 23: Linking error

Develop With Docker

開發環境• 安裝 toolchain 與相關開發⼯工具

• 編譯相依 Libraries

• prefix: /opt/vendor

• 將上述需求整理成 script 與 Dockerfile

• docker build -t acme/vendor .

• 接著我們能這麼使⽤用

• docker run -ti acme/vendor /bin/bash …

Page 24: Linking error

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

Page 25: Linking error

Develop With Docker

CMake• Don’t Be Autofools

• 模組化設計,需要 OOO 功能就引⽤用 OOO 模組

• 學習撰寫、改寫 find_package

• 開發中的 library 常在⾮非系統預設路徑,適度的改寫與客製化是必要的。http://bit.ly/1DmrtO3

• 範例:FindLibAO.cmake http://bit.ly/1DmtDgB

Page 26: Linking error

Develop With Docker

• CMake 2.6.0 後開始⽀支援 Cross compiling http://bit.ly/1DmsBRN

• 將需要 Cross Compiling 設定的變數定義出來,並能將設定獨⽴立在專屬的檔案內

Cross Compiling

cmake \ -DCMAKE_TOOLCHAIN_FILE=toolchain_vendor.cmake .

One vendor, One toolchain file

Page 27: Linking error

Develop With Docker

Any Question Before Demonstration Build our Project

Page 28: Linking error

Develop With Docker

組合的力量

Docker Image For Vendor [a-zA-z0-9]+

CMake Toolchain File for Vendor [a-zA-z0-9]+

X

Page 29: Linking error

Develop With Docker

• 如何免除開發環境建置、維護的負擔

• 如何優雅地寫出符合各種 toolchain 的 Makefile

複習一下

用 Docker,一人努力,多人享受

CMake + Find_Package + ToolchainFile

Page 30: Linking error

Develop With Docker

Q & A