SlideShare a Scribd company logo
1 of 106
Download to read offline
GNU Make, Autotools, 
CMake ⡆௓ 
Wen Liao
Disclaimer 
ᢞᙳ∦㈨ᩱⅭస⪅ᩚ⌮㈨ᩱཬಶேពぢ䠈ἄ᭷⥂ 
㐣ᄫㅽ☜ㄆ䠈ㄳㆫ⪅⮬⾜᩵㓃
┠ᶆ 
● ⡆௓GNU Make, Autotools, ࿴CMake 
○ Autotools࿴CMake㒊௷ᴟᗘ⡆௓
 ヨ⎔ቃ
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
஦ඛ‽ഛ 
● Ⅽ஢ᝍⓗ⏕άᖾ⚟⨾⁹䠈ㄳ☜ㄆ⦅㍴ჾᨭ᥼㢷 
♧✵ⓑᏐඖ࿴<tab>Ꮠඖ! 
geany: 
<tab> trailing space 
vim:
㜝᪊GNU Make 
● man make 
○ GNU make utility to maintain groups of programs 
○ ???
┤᥋┳౛Ꮚ 
ᛠ㯟⦅㆞?
⡆ႝ䠈gcc hello.c
ຍ☞䠈㏺ಶᛠ㯟⦅㆞?
GG! 㑏せຍinclude Path
㑣㯟ୖⓒಶ᷐᱌ᛠ㯟㎨䠛ᡴ฿Ṛ䠛
ᑙ᱌᷐᱌㔞኱⦅㆞ⓗၥ㢟 
● ᡃ⬟୙⬟ᡴ୍⾜ᣦ௧ᑵᖳᡃ⮬ື⦅㆞? 
● ᡃ⬟୙⬟ྈ⦅㆞᭦ື㐣ⓗ᷐᱌? 
○ ໟྵᨵ஢*.h᷐᱌ᑞ᠕*.c㒔ྍ௨⮬ື㔜⦅ 
● ྍ୙ྍ௨᭷ἄ᭷㟰άⓗ⦅㆞⤌ែ? 
○ タᐃdebug mode㑏᫝release mode 
○ タᐃ⦅㆞ჾ㑅㡯 
○ Compile timeᣦᐃᕧ㞟 
■ -DMY_VAR=1 
○ ...
Yes You Can!
㜝᪊GNU Make 
● man make 
○ The purpose of the make utility is to 
determine automatically which pieces of a 
large program need to be recompiled, 
and issue the commands to recompile 
them. 
○ ⓑヰ: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
■ 㑣㒊௷せ㔜⦅ 
■ ᣦᐃ㔜᪂⦅㆞ⓗືస
Hello Makefile 
target prerequisites 
recipe ୍ᐃせ<tab>㛤㢌! 
௨ୗ᝟ἣ᭳ᇳ⾜recipe 
● ᪂ቔ䠖target᷐᱌୙Ꮡᅾ 
○ ㏻ᖖtarget᫝୍ಶ᷐᱌䠈ణ᫝㏺୙᫝ᚲせᲄ௳ 
● ᭦᪂䠖prerequisites᷐᱌᭦ື᫬㛫ẚtarget᷐ 
᱌㑏せ᪂
ㄡ說Makefile୍ᐃせ⦅㆞᷐᱌? 
target prerequisites 
୍㛤ጞྈ᭷Makefile䠈ୗmakeฟ⌧㘒ㄗ說↓ἲ產⏕dep_file 
產⏕dep_fileᚋ᭳ᇳ⾜@echo Test 
產⏕test_fileᑵ୙ᇳ⾜@echo Test 
᭦᪂dep_file ᭦ື᫬㛫ᚋ᭳ᇳ⾜@echo Test 
recipe
ᶞ≪target 
● ➨୍ಶtarget✃Ⅽdefault target䠈ஓ᫝makeⓗ㐍ධ㯶䚹 
● @⾲♧୙せᢕᣦ௧༳ฟ䠈ྍ௨⦎⩦ᢕ௚ᣡᤶ┳┳䚹 
● $@ᒎ㛤ᚋ᫝targetⓗྡ✃
ㄳẚᑞୖ㡫䠈やᐹ㡰ᗎ䟿
ㆰᩝ 
● タᐃ 
○ VAR = VAL 
○ VAR := VAL 
○ VAL ?= VAL 
○ VAR += VAL 
○ ඼௚ᡃ୙᠐ⓗ 
● タᐃ᫬ᶵ 
○ ᷐᱌䠈㏻ᖖᑵ᫝Makefile內 
○ make ࿨௧ⓗཨᩝ 
○ ⎔ቃㆰᩝ 
● ྲྀ值 
○ $(VAR)
VAR = VAL 
VAR := VAL 
VAL ?= VAL 
VAR += VAL
୕ᑠ䠛
ㆰᩝタᐃ: 㐃ືᆺ = 
VAR1 ➨୍ḟタᐃ 
VAR2 ⓗ值࿴VAR1┦ྠ 
༳ฟVAR2ⓗ內ᐜ 
VAR1 ➨஧ḟタᐃ 
෌༳ฟVAR2ⓗ內ᐜ
ඳḟVAR2ⓗ內ᐜ䠈᭳㞉VAR1ᨵㆰ
ㆰᩝタᐃ䠖❧้⏕ᩀᆺ := 
ྈᨵ㏺⾜䠈ᢕ = ᨵᡂ :=
ㆰᩝタᐃ: 㡸タᆺ ?=
ㆰᩝタᐃ䠖ຍ☞ᆺ +=
ᑠ⤖ 
タᐃ ⌮ゎ᪉ᘧ 
VAR = VAL 㐃ືᙧ 
VAR := VAL ❧༶⏕ᩀᙧ 
VAL ?= VAL 㡸タᙧ 
VAR += VAL ຍ☞ᙧ 
඼௚ᡃ୙᠐ⓗ ୙᠐ⓗ୙▱㐨ᛠ㯟ゎ㔚
內ᘓㆰᩝ (⠇㗴) 
ྡ✃ ព⩏ 
$@ targetྡ✃ 
$^ ᡤ᭷ⓗprerequisitesྡ✃ 
$< ➨୍ಶprerequisiteྡ✃ 
⏝㏵அ୍䠖 
target: dep1.c inc.h test.h 
<tab> gcc -o $@ $< 
$? ẚtarget㑏᪂ⓗprerequisitesྡ✃
⠊౛ 
タᐃせ產⏕ⓗᇳ⾜᷐ 
タᐃせ⦅㆞ⓗ⛬ᘧ᷐ 
⦅㆞ཨᩝ 
ᒎ㛤ㆰᩝ䠈౫ᒎ㛤ⓗ 
ㆰᩝ⦅㆞᷐᱌ 
Ύ㝖產⏕ⓗ᷐᱌つ๎
┠㗴ୗ᭷ཎጞ᷐࿴Makefile 
⦅㆞᭷ᒎ㛤ㆰᩝ୪ᣦᐃᑞ 
᠕᷐᱌┠㗴ୗ᭷ཎጞ᷐࿴ 
Makefile 
ᇳ⾜᷐ᕬ⥂產⏕ 
Ύ㝖ᇳ⾜᷐୪㔜᪂⦅㆞
ᲄ௳ุ᪇⠊౛ 
LOGNAME᫝⎔ቃㆰᩝ!
LOGNAME᫝⎔ቃㆰᩝ! 
ே⫗タᐃLOGNAME內ᐜ
function⠇㗴 
● ㄒἲ 
○ $(ภᩝྡ✃ ཨᩝ) 
ศ㢮 ภᩝྡ✃ 說᫂ ⠊౛ (ㄳ㈞฿Makefileᐿ !) 
イᜥ 
$(waring イᜥ) 㢷♧㆙࿌イᜥ௨ཬᑞ᠕ⓗ⾜⹰ $(warning Your gcc version is too old) 
$(error イᜥ) 㢷♧㘒ㄗイᜥ䚸ᑞ᠕ⓗ⾜⹰ᚋ⤖᮰ 
make 
conf=my_file 
$(error file $(conf) not found) 
Ꮠ୵ 
⹦⌮ 
$(subst from,to,⹦⌮ᩥᏐ) Ꮠ୵᭰᥮,ᚋ㠃✵ⓑⅭཨᩝⓗ୍㒊௷ $(warning $(subst .c,.o,test.c hello.c)) 
$(patsubst pattern,᭰᥮ᩥᏐ,⹦⌮ᩥᏐ) patternᏐ୵᭰᥮,ᚋ㠃✵ⓑⅭཨᩝⓗ୍ 
㒊௷䚹%௦⾲௵ព㛗ᗘⓗ௵ពᏐඖ䚹 
$(warning $(patsubst t%.c,a%.o,test.c 
hello.c)) 
඼௚ $(shell ࿨௧) ᇳ⾜࿨௧䠈ᅇബᩥᏐ⤖ᯝ $(warning $(shell ls /))
㐃⧰ᢏ 
● OBJS=$(patsubst %.c,%.o,$(shell ls *.c))
ᖖぢ㘒ㄗ䠖ẗಶrecipe ᇳ⾜≪ែ୙ᘏ⧰ 
㐀ᡂⓗᝒ๻ 
⠊౛䠖ᘓ❧୍ಶ┠㗴䠈㐍ධヱ┠㗴๓ᚋ 
༳ฟ┠๓ᕤస┠㗴☜ㄆษ᥮┠㗴ᡂຌ
㛤⊼䠈ἄ᭷ษ᥮฿test┠㗴
✽Ꮿ┳ⓗ䠈ྍ௨┳฿make⹦⌮recipeⓗ 
᪉ᘧ᫝產⏕᪂ⓗprocess䠈ᇳ⾜recipe䠈 
↛ᚋ⤖᮰ヱprocess 
$ strace -f make 
vfork(Process 8949 attached (waiting for parent) 
Process 8949 resumed (parent 8947 ready) 
) = 8949 
[pid 8949] execve("/bin/mkdir", ["mkdir", "-p", "test"], 
[/* 42 vars */]) = 0 
<... wait4 resumed> [{WIFEXITED(s) && 
WEXITSTATUS(s) == 0}], 0, NULL) = 8949 
--- SIGCHLD (Child exited) @ 0 (0) ---
ᑠ⤖ 
● GNU make: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
○ 㑣㒊௷せ㔜⦅ 
○ ᣦᐃ㔜᪂⦅㆞ⓗືస 
● ᡤ௨ᑃMakefile䠈୺せᥥ㏙ 
○ 產⏕᷐᱌࿴ཎጞ᷐ⓗ㜝⫃ᛶ 
○ ␜㏺ல᷐᱌᭦ື᫬㛫㜝ಀ᭷ㆰ໬ⓗ᫬ೃ䠈ヱ 
೴ொ㯟஦?
⿵඘1: ἄ᭷Makefileⓗmake 
┠๓┠㗴ἄ᭷Makefile 
↷ᶏmakeქქ 
↷ᶏmake++
Implicit Rules 
୕ᑠ䠛
make -p 
CPP㏺㑔ྍ୙᫝C++䠈᭷ 
⯆㊃man cpp 
㑏グᚓㆰᩝႫ䠛
make -p (᥋㜝䠅 
make᭷內ᘓ㡸タⓗ⹦⌮つ๎䠈ㄳ࿴ୖ㡫ㆰᩝ௨ཬ๓㠃ⓗㄒ 
ἲᑞ↷
⿵඘2: .PHONY 
⠊౛Makefile䠈ໟྵ產⏕binary࿴Ύ㝖binary
⋵┳┳ 
Ύ㝖binary 
產⏕᪂᷐䠈ྡ✃Ⅽclean 
᷐᱌cleanᏑᅾ䠈↓ἲΎ㝖binary 
ᚲ㡲฽㝖᷐᱌cleanᡯ⬟ᇳ⾜target
ศᯒ 
● recipe ⓗᇳ⾜࿴target௨ཬprerequisites᷐᱌ 
᫬㛫㈨イ᭷㜝 
● cleanⓗ┠ⓗ୪୙᫝せ產⏕clean᷐᱌䠈ஓᑵ᫝ 
說targetᇳ⾜recipe࿴target᫝ྰⅭ᷐᱌↓㜝
.PHONY 
● ࿴᷐᱌↓㜝ⓗtarget 
● ⏝ἲ 
.PHONY: ௨✵ⓑ㝸㛤ⓗTARGETྡ✃ 
● ⠊౛ 
.PHONY: clean install
ಟṇ 
.PHONYᅾ㏺㑔
┳┳ᩀᯝ
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ዴఱ⮬ື㐍ධ୙ྠ┠㗴Make? 
● ዴఱ⮬ື產⏕C source᷐࿴Header᷐᱌rule? 
○ hello.c includes f1.h, f2.h䠈ඳኳᚋཪຍධf3.h䚹ᡭືᨵ 
ᚇ⣼䚹 
● ᭷ἄ᭷㎨ἲᢕᡤ᭷ⓗタᐃᨺᅾ᷐᱌內⤥ 
Makefile include?
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
」⩦䠖GNU Makeᑠ⤖ 
● GNU make: ༠ຓ⦅㆞ⓗ᫬ೃỴᐃ 
○ 㑣㒊௷せ㔜⦅ 
○ ᣦᐃ㔜᪂⦅㆞ⓗືస 
● ᡤ௨ᑃMakefile䠈୺せᥥ㏙ 
○ 產⏕᷐᱌࿴ཎጞ᷐ⓗ㜝⫃ᛶ 
○ ␜㏺ல᷐᱌᭦ື᫬㛫㜝ಀ᭷ㆰ໬ⓗ᫬ೃ䠈ヱ 
೴ொ㯟஦?
㑣㯟᭳ொ㯟㑏せ᭷autotools 
● ㊬ᖹྎⓗၥ㢟 
○ memset v.s. bzero 
○ ㊰ᚏ䚸᷐᱌୙ྠ 
○ system call୙ྠ 
● ྠᖹྎ 
○ ภᘧᗜ∧ᮏ୙ྠ䠈prototypeྍ⬟୙ྠ 
● ┦౫ᛶၥ㢟
autotools 
● autotoolⓗ┠ⓗᑵ᫝產⏕ᖹྎୖྍ௨⦅㆞ⓗ⎔ 
ቃ 
● Ⅽ஢㐩฿㏺ᶏⓗ┠ⓗ䠈⣔⤫㟂せ೴฿ୗ㠃ⓗຌ 
⬟ 
○ ᷙ查ᖹྎ⎔ቃ 
○ 產⏕Makefile
ὶ⛬ 
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
http://en.wikipedia.org/wiki/GNU_build_system#mediaviewer/File:Autoconf-automake-process.svg
ᚇ」㞯䠛ཱྀ㢌ㅮᑵ᫝ 
1. ⮬ᖿᡈ㊝ᕤලᚋ產⏕᭦ືconfigure. 
ac䠈࿴ᑃMakefile.am 
2. ㊝ᕤල產⏕configure, Makefile.in࿴ 
config.in 
3. ㊝configure䠈產⏕Makefile࿴config.h 
4. make; make install
㑏୙᠐䠛౗┳⠊౛ 
఼せᑃⓗᮾす
autoreconfᖳ఼࿧ྉ┦㜝ᕤ 
ලዴaclocal, autoconf, 
automake➼
產⏕ฟ౗ⓗ᷐᱌
產⏕ฟ౗ⓗ᷐᱌
configure.ac 
# せồ∧ᮏ 
AC_PREREQ([2.68]) 
# ዓ௳㈨イ 
AC_INIT([Test_Autotools], [0], [test]) 
# ⤥Automake㈨イ䠈foreign⾲♧୙⏝GNUᶆ‽ 
# ஓᑵ᫝୙㟂せchangelog, AUTHORS➼᷐᱌ 
AM_INIT_AUTOMAKE([foreign -Wall -Werror])
configure.ac 
# config᷐᱌ 
AC_CONFIG_HEADERS([config.h]) 
# ᮏḟdemo౑⏝ static library 
AC_PROG_RANLIB 
# Makefile ㊰ᚏ 
AC_CONFIG_FILES([Makefile src/Makefile 
libs/Makefile])
configure.ac 
# ᦏᑜCC ⦅㆞ჾ 
AC_PROG_CC 
# ⤖᮰config䠈㛤ጞ產⏕┦㜝᷐᱌ 
AC_OUTPUT
Makfile.am 
SUBDIRS = libs src
libs/Makefile.am 
# ᣦᐃinclude㊰ᚏ 
AM_CFLAGS = -I../include 
# 產⏕liba.a ࿴libb.b 
# lib_௦⾲Ᏻ⿶᫬せᨺᅾ$(prefix)/lib୰ 
# 㡸タprefix=/usr/local 
lib_LIBRARIES = liba.a libb.a
libs/Makefile.am 
# 產⏕liba.aⓗ┦౫᷐᱌ 
liba_a_SOURCES = liba.c liba.h 
# 產⏕libb.aⓗ┦౫᷐᱌ 
libb_a_SOURCES = libb.c libb.h 
# Ᏻ⿶฿$(prefix)/includeⓗ᷐᱌ 
include_HEADERS = ../include/liba.h .. 
/include/libb.h
src/Makefile.am 
# ᣦᐃlinkီலlibrary 
LDADD = ../libs/liba.a ../libs/libb.a 
# ᣦᐃinclude㊰ᚏ 
AM_CFLAGS = -I../include
src/Makefile.am 
# Ᏻ⿶฿$(prefix)/bin 
bin_PROGRAMS = test 
# 產⏕ⓗ᷐᱌┦౫ⓗ᷐᱌ 
test_SOURCES = test.c
● configure 
● make 
● make install 
● make dist # ⮬ືᖳ఼ᡴໟtarball
ᑠ⤖ 
● ౑⏝autotools㟂せ⮬ᕫᑃ 
○ configure.ac 
○ Makefile.am 
● ୖ㠃ⓗ⠊౛ᴟᗘ⡆␎
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ዴఱ產⏕shared library? 
● ᫝ྰ᭷᭦⫄᫂ⓗlibrary產⏕᪉ᘧ䠛 
○ hint: libtools
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
㜝᪊CMake 
CMake᫝1999ᖺ᥎ฟⓗ㛤※⮬⏤㌾㧓ィ␓䠈┠ⓗ 
᫝ᥦ౪୙ྠᖹྎஅ㛫ඹྠⓗ⦅㆞⎔ቃ䚹 
≉ᛶ: 
● ᨭ᥼୙ྠᖹྎ 
● ྍ௨ᑘBuild࿴ཎᮏ⛬ᘧ☞ศ㛤 
○ out-place build 
○ in-place build 
● ᨭ᥼cacheຍᛌ⦅㆞㏿ᗘ
ὶ⛬ 
● ᧝ᑃCMakeLists.txt 
● ౑⏝⪅ᇳ⾜cmake 
○ 產⏕ヱᖹྎᑞ᠕ⓗ⦅㆞⎔ቃ᷐᱌ዴMakefile➼ 
● ౑⏝⪅ᇳ⾜ᖹྎୖⓗ⦅㆞᪉ἲ 
○ ዴmake 
● ౑⏝⪅ᇳ⾜cmake installᏳ⿶㌾㧓䚹
⠊౛ 
఼せᑃⓗᮾす
CMakeLists.txt 
# ∧ᮏ㟂ồ 
cmake_minimum_required(VERSION 2.8) 
# ఼ⓗProjectྡ✃ 
project(testcmake)
CMakeLists.txt 
# タᐃㆰᩝ 
set(SRC_DIR src) 
set(LIB_DIR libs) 
set(INC_DIR include) 
# Compile flags 
set(CMAKE_C_FLAGS "-Wall -Werror")
CMakeLists.txt 
# ᣦ௧include┠㗴 
include_directories(${INC_DIR}) 
# ࿌ッCMakeせཤୗิⓗ┠㗴⦅㆞ 
add_subdirectory(${SRC_DIR}) 
add_subdirectory(${LIB_DIR}) 
add_subdirectory(${INC_DIR})
libs/CMakeLists.txt 
# タᐃㆰᩝ䠈ᣦᐃlibrary┦౫᪊ီಶ᷐᱌ 
set(liba_SRCS liba.c) 
set(libb_SRCS libb.c) 
# ᣦᐃ⦅㆞ᆺᘧⅭshared library 
add_library(a SHARED ${liba_SRCS}) 
add_library(b SHARED ${libb_SRCS})
libs/CMakeLists.txt 
# Ᏻ⿶᱁ᘧ 
# install(TARGETS ภᘧᗜྡ✃ LIBRARY 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(TARGETS a b LIBRARY 
DESTINATION lib)
src/CMakeLists.txt 
# タᐃㆰᩝ 
set(test_SRCS test.c) 
# 產⏕ᇳ⾜᷐ 
add_executable(${PROJECT_NAME} 
${test_SRCS}) 
# ᣦ௧linkภᘧᗜ 
target_link_libraries(${PROJECT_NAME} a b)
src/CMakeLists.txt 
# Ᏻ⿶᱁ᘧ 
# install(TARGETS ᇳ⾜᷐ྡ✃ 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(TARGETS ${PROJECT_NAME} 
DESTINATION bin)
include/CMakeLists.txt 
# install(FILES Header᷐ྡ✃ 
# DESTINATION Ᏻ⿶┠㗴㊰ᚏ) 
install(FILES liba.h libb.h 
DESTINATION include)
out-place build
ᑠ⤖ 
● ఼せᑃCMakeLists.txt䠈ᣦᐃせ㐍ධီல┠㗴 
⦅㆞䠈ᡈ᫝┦㜝ⓗ᷐᱌௨ཬ㡸ᮇ⦅㆞࿴Ᏻ⿶ⓗ 
ᆺែ 
● ୖ㠃ⓗ⠊౛ᴟᗘ⡆␎
ᘏఙ㢟ᮦ/ᅇᐙຌㄢ 
● ヲ⣽ㄒἲ 
○ ㆰᩝタᐃ 
○ ᲄ௳タᐃ 
○ ᕧ㞟࿴ภᩝ 
● ᡴໟ᪉ᘧ
๦ୗᑵ᫝⣽⠇䠈ㄳ⮬⾜ 
┳᭩䠈つ๸タィ⮬ᕫⓗ 
ᐿ⩦ㄢ䚹
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A
ཨ⪃㈨ᩱ 
● GNU Makeᡭ෉ 
○ http://www.gnu.org/software/make/manual/make.html 
● GNU Make ᛌ㏿ཨ⪃ 
○ http://www.gnu.org/software/make/manual/make. 
html#Quick-Reference 
● GNU Automakeᡭ෉ 
○ http://www.gnu. 
org/software/automake/manual/automake.html 
● Alexandre Duret Lutz: Autotools Tutorial (኱ 
᥎) 
○ https://www.lrde.epita.fr/~adl/autotools.html
ཨ⪃㈨ᩱ 
● CMake Wiki 
○ http://www.cmake.org/Wiki/CMake 
● CMake-tutorial (኱᥎) 
○ https://github.com/TheErk/CMake-tutorial
Outline 
● GNU Make 
● Autotools 
● CMake 
● ཨ⪃㈨ᩱ 
● Q & A

More Related Content

What's hot

Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
Rashila Rr
 
Hints for a successful hfs to zfs migration
Hints for a successful hfs to zfs migrationHints for a successful hfs to zfs migration
Hints for a successful hfs to zfs migration
satish090909
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
Emertxe Information Technologies Pvt Ltd
 

What's hot (20)

【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
【SRX】JUNOS ハンズオントレーニング資料 SRXシリーズ サービス ゲートウェイ コース
 
Linux Interrupts
Linux InterruptsLinux Interrupts
Linux Interrupts
 
Embedded_Linux_Booting
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
 
Hints for a successful hfs to zfs migration
Hints for a successful hfs to zfs migrationHints for a successful hfs to zfs migration
Hints for a successful hfs to zfs migration
 
What Can Compilers Do for Us?
What Can Compilers Do for Us?What Can Compilers Do for Us?
What Can Compilers Do for Us?
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & Linux
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
Embedded Operating System - Linux
Embedded Operating System - LinuxEmbedded Operating System - Linux
Embedded Operating System - Linux
 
Yum (Linux)
Yum (Linux) Yum (Linux)
Yum (Linux)
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
한컴MDS_Virtual Target Debugging with TRACE32
한컴MDS_Virtual Target Debugging with TRACE32한컴MDS_Virtual Target Debugging with TRACE32
한컴MDS_Virtual Target Debugging with TRACE32
 
Learn C Programming Language by Using GDB
Learn C Programming Language by Using GDBLearn C Programming Language by Using GDB
Learn C Programming Language by Using GDB
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
 
TR-069_Amendment-5
TR-069_Amendment-5TR-069_Amendment-5
TR-069_Amendment-5
 
SpectreBustersあるいはLinuxにおけるSpectre対策
SpectreBustersあるいはLinuxにおけるSpectre対策SpectreBustersあるいはLinuxにおけるSpectre対策
SpectreBustersあるいはLinuxにおけるSpectre対策
 
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
SFO15-TR9: PSCI, ACPI (and UEFI to boot)SFO15-TR9: PSCI, ACPI (and UEFI to boot)
SFO15-TR9: PSCI, ACPI (and UEFI to boot)
 
G120 cu250 s2_kba1_0414_eng_en-us
G120 cu250 s2_kba1_0414_eng_en-usG120 cu250 s2_kba1_0414_eng_en-us
G120 cu250 s2_kba1_0414_eng_en-us
 
IBM Power10.pdf
IBM Power10.pdfIBM Power10.pdf
IBM Power10.pdf
 

Similar to GNU Make, Autotools, CMake 簡介

CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++
Seiya Ishibashi
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compiler
ovidlivi91
 
Unix is my IDE
Unix is my IDEUnix is my IDE
Unix is my IDE
tkramar
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201
ylefebvre
 

Similar to GNU Make, Autotools, CMake 簡介 (20)

CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++CEDEC2014 Live Coding in C++
CEDEC2014 Live Coding in C++
 
Coding with Vim
Coding with VimCoding with Vim
Coding with Vim
 
GDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしようGDG DevFest Kyoto 2014 これからのGoの話をしよう
GDG DevFest Kyoto 2014 これからのGoの話をしよう
 
Introduction of unit test on android kernel
Introduction of unit test on android kernelIntroduction of unit test on android kernel
Introduction of unit test on android kernel
 
Compiler design notes phases of compiler
Compiler design notes phases of compilerCompiler design notes phases of compiler
Compiler design notes phases of compiler
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3
 
Kick my mouse away
Kick my mouse awayKick my mouse away
Kick my mouse away
 
Practical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profilingPractical SystemTAP basics: Perl memory profiling
Practical SystemTAP basics: Perl memory profiling
 
Unix shell talk - RIT SSE
Unix shell talk - RIT SSEUnix shell talk - RIT SSE
Unix shell talk - RIT SSE
 
Getting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformGetting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platform
 
Basicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt applicationBasicsof c make and git for a hello qt application
Basicsof c make and git for a hello qt application
 
Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016Not Your Fathers C - C Application Development In 2016
Not Your Fathers C - C Application Development In 2016
 
Trace kernel code tips
Trace kernel code tipsTrace kernel code tips
Trace kernel code tips
 
Autotools
AutotoolsAutotools
Autotools
 
Go. Why it goes
Go. Why it goesGo. Why it goes
Go. Why it goes
 
TinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management PlatformTinyMCE Editor - Rhythmyx: Powerful Website Management Platform
TinyMCE Editor - Rhythmyx: Powerful Website Management Platform
 
Unix is my IDE
Unix is my IDEUnix is my IDE
Unix is my IDE
 
WordPress Plugin Development 201
WordPress Plugin Development 201WordPress Plugin Development 201
WordPress Plugin Development 201
 
Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs Types - slice, map, new, make, struct - Gopherlabs
Types - slice, map, new, make, struct - Gopherlabs
 
Andriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tipsAndriy Shalaenko - GO security tips
Andriy Shalaenko - GO security tips
 

More from Wen Liao

GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例
Wen Liao
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3
Wen Liao
 

More from Wen Liao (18)

Hello world 的一生
Hello world 的一生Hello world 的一生
Hello world 的一生
 
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
Notes on oracle solaris 11.3 linkers  and libraries guide  chapter oneNotes on oracle solaris 11.3 linkers  and libraries guide  chapter one
Notes on oracle solaris 11.3 linkers and libraries guide chapter one
 
開放街圖 自助旅行的好幫手
開放街圖   自助旅行的好幫手開放街圖   自助旅行的好幫手
開放街圖 自助旅行的好幫手
 
GNU AS簡介
GNU AS簡介GNU AS簡介
GNU AS簡介
 
UPnP 1.0 簡介
UPnP 1.0 簡介UPnP 1.0 簡介
UPnP 1.0 簡介
 
故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman故事:自由軟體和 Richard Stallman
故事:自由軟體和 Richard Stallman
 
Hello world在那邊?背景說明
Hello world在那邊?背景說明Hello world在那邊?背景說明
Hello world在那邊?背景說明
 
A successful git branching model 導讀
A successful git branching model 導讀A successful git branching model 導讀
A successful git branching model 導讀
 
GNU ld的linker script簡介
GNU ld的linker script簡介GNU ld的linker script簡介
GNU ld的linker script簡介
 
Trace 程式碼之皮
Trace 程式碼之皮Trace 程式碼之皮
Trace 程式碼之皮
 
淺談Debian套件打包
淺談Debian套件打包淺談Debian套件打包
淺談Debian套件打包
 
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard LibraryA Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
A Brief Introduction to Regular Expression with Python 2.7.3 Standard Library
 
GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例GNU gettext簡介 - 以C語言為範例
GNU gettext簡介 - 以C語言為範例
 
Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10Guide to GStreamer Application Development Manual: CH1 to CH10
Guide to GStreamer Application Development Manual: CH1 to CH10
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3
 
從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理從組裝軟體中談談軟體發展管理
從組裝軟體中談談軟體發展管理
 
軟體組裝心得分享
軟體組裝心得分享軟體組裝心得分享
軟體組裝心得分享
 
Introduce to Linux command line
Introduce to Linux command lineIntroduce to Linux command line
Introduce to Linux command line
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

GNU Make, Autotools, CMake 簡介