Toolchain

Anil Kumar Pugalia
Anil Kumar PugaliaLinux Geek and Open Source Hardware & Software Freak, Corporate Trainer, Entrepreneur in Automation
Toolchain 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 
All Rights Reserved.
What to Expect? 
W's of a Toolchain 
W's & How's of Cross Toolchain? 
Building a Cross Toolchain 
Testing a Cross Toolchain 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 2 
All Rights Reserved.
What is a Toolchain? 
Collection of Tools 
In Embedded context 
Collection of C Compiler & its Friends 
Categorized under 3 umbrella 
C Compiler (gcc) 
Set of C Libraries (e.g. glibc, uClibc) 
Binary Utilities (binutils) 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 3 
All Rights Reserved.
Check on gcc 
How do you do the following? 
Generate Object Code 
Generate Assembly Code 
Generate Pre-processed Code 
Generate a Shared Library 
Adding Header Path 
Adding Library Path 
Linking a Library 
Excluding standard includes & libraries 
Adding a “#define” 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 4 
All Rights Reserved.
gcc Internals 
.c .i IC (parse trees, ...) .S .o .exe 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 5 
All Rights Reserved. 
Pre 
Processor 
ICG 
(machine 
independent) 
ICG 
(machine 
dependent) 
Assembler 
(as) 
Linker 
(ld) 
gcc core 
gcc wrapper 
gcc -S 
gcc -c 
gcc 
gcc -E
Set of C Libraries 
Generally useful Libraries 
C, Math, Thread, Socket, … 
Various Options 
glibc 
Complete featured but heavy on memory 
Highly standard compatible 
uClibc 
Light-weight with mostly same features 
But not that much standards compatible 
Diet libc 
Similar to uClibc, just that this has been done from scratch 
Emphasis on minimizing size & optimizing performance 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 6 
All Rights Reserved.
Binary Utilities 
as – GNU Assembler 
ld – GNU Linker 
gasp – GNU Assembler Pre-processor 
ar – Creates & Manipulates Archives 
nm – Lists the symbols in an Object file 
objcopy – Copies & Translates Object files 
objdump – Displays info about Content of the Object files 
ranlib – Generates an index to the content of Object files 
readelf – Displays info about an ELF format Object file 
size – Lists the sizes of sections within an Object file 
strings – Prints the strings of printable characters in Object files 
strip – Strips symbols from Object files 
c++filt – Converts low-level, mangled assembly labels resulting from overloaded 
C++ functions to their user-level names 
addr2line – Converts addresses into line numbers within original source files 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 7 
All Rights Reserved.
What is Cross? 
gcc Example: gcc vs cross gcc 
src 
Host 
Native 
gcc 
Target 
Native 
gcc 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 8 
All Rights Reserved. 
Host 
prog 
src 
Host 
exe 
prog 
Target 
Tgt 
exe 
prog 
Cross 
gcc
What is a Cross Toolchain? 
Toolchain which has all “cross” tools 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 9 
All Rights Reserved.
Why we need a Cross 
Toolchain? 
Embedded Systems are constrained 
Toolchain demands heavy memory & 
performance 
May not always have a console interface 
Even if there, may be minimal 
Ease of Development 
Complete accustomed Development 
Environment on the Host 
Favourite Editors, GUIs, … 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 10 
All Rights Reserved.
How to get a Cross Toolchain? 
Get it pre-compiled from vendors 
Popular: Code sourcery 
Local: Requirement specific 
Build your own 
Doing it manually is a complicated process 
Inter Package version compatibility is the biggest 
challenge 
But various automated tools are available 
today to simplify the process 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 11 
All Rights Reserved.
Automated Build Tools 
Crosstool 
crosstool-ng.org 
Buildroot 
buildroot.org 
Ptxdist 
ptxdist.org 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 12 
All Rights Reserved.
Cross Toolchain Building 
Overview 
Build of various GNU Packages involved 
Typical Build Steps for these Packages 
Download & Unpack the source of the Package 
Configure the Package for Cross-Platform Development 
Build the Package (make) 
Install the Package (make install) 
Configuring involves setting up build, host, target 
./configure build=... host=... target=... 
Using Triplet: cpu[-manufacturer][-kernel][-os/obj_file_fmt] 
Examples: i386-pc-linux-gnu, xscale-sun-solaris2.5/elf 
Tool Prefix: Same as the triplet 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 13 
All Rights Reserved.
Cross Toolchain Headers 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 14 
All Rights Reserved. 
Linux 
Kernel 
Headers 
User 
Specific 
Headers 
extract 
C Library 
Headers 
User 
Space 
Headers 
From the 
Kernel 
Sources 
/usr/include
Cross Toolchain Component 
Dependency 
Cross 
Full gcc 
(gcc, g++) 
kernel 
hdrs 
library 
hdrs 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 15 
All Rights Reserved. 
Native 
gcc 
Cross 
binutils 
Cross 
bootstrap 
gcc 
(xgcc) 
Target 
Libraries 
binutils 
gcc 
library 
Source Code 
src
Cross Toolchain Building Steps 
Set up Linux Kernel Headers 
Ideally from the Kernel version being used 
Commands 
make ARCH=<arch> headers_check 
make ARCH=<arch> INSTALL_HDR_PATH=install_dir/ 
headers_install 
Build Binary Utilities 
Build the bootstrap Compiler (The C only Compiler) 
Build the C Library 
Build the full Compiler 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 16 
All Rights Reserved.
Building a Toolchain using 
Crosstool 
Install the Crosstool 
cd cross-tool-ng 
./configure –prefix=/opt/board/ 
make 
make install 
cp ct-ng.comp /etc/bash_completion.d/ 
export PATH=$PATH:/opt/board/bin/ 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 17 
All Rights Reserved.
Building a Toolchain using 
Crosstool 
Build the Toolchain 
mkdir ct-build src 
cd ct-build/ 
mkdir .build 
cp Templates/Toolchain/sources.tgz .build/ 
(available from Downloads section of http://sysplay.in) 
ct-ng menuconfig 
ct-ng build 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 18 
All Rights Reserved.
Testing a Cross Toolchain 
Compile a C program to various stages 
Pre-process only 
Get Assembly 
Get Object 
Get Executable 
Compile a C program with headers 
Compile a C program with linking libraries 
Create a C Program with floating point operations 
Execute & Test the generated target programs 
Toolchain “Self Contained” Test 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 19 
All Rights Reserved.
What all have we learnt? 
W's of a Toolchain 
Compiler 
Binary Utilities 
Set of C Libraries 
W's & How's of Cross Toolchain? 
Building a Cross Toolchain 
Building Steps 
Automated Build Tools 
Testing a Cross Toolchain 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 20 
All Rights Reserved.
Any Queries? 
© 2010-14 SysPlay Workshops <workshop@sysplay.in> 21 
All Rights Reserved.
1 of 21

Recommended

USB Drivers by
USB DriversUSB Drivers
USB DriversAnil Kumar Pugalia
42.9K views31 slides
Board Bringup by
Board BringupBoard Bringup
Board BringupAnil Kumar Pugalia
28.7K views16 slides
Jagan Teki - U-boot from scratch by
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratchlinuxlab_conf
710 views90 slides
BeagleBone Black Bootloaders by
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black BootloadersSysPlay eLearning Academy for You
4.6K views24 slides
U-Boot - An universal bootloader by
U-Boot - An universal bootloader U-Boot - An universal bootloader
U-Boot - An universal bootloader Emertxe Information Technologies Pvt Ltd
3.1K views46 slides
Embedded Linux - Building toolchain by
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchainEmertxe Information Technologies Pvt Ltd
2.3K views33 slides

More Related Content

What's hot

Embedded Android : System Development - Part II (Linux device drivers) by
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Emertxe Information Technologies Pvt Ltd
5.6K views43 slides
U-Boot presentation 2013 by
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013Wave Digitech
18.7K views28 slides
Linux Kernel Overview by
Linux Kernel OverviewLinux Kernel Overview
Linux Kernel OverviewAnil Kumar Pugalia
26.7K views20 slides
Introduction to Linux by
Introduction to LinuxIntroduction to Linux
Introduction to LinuxAnil Kumar Pugalia
11.2K views32 slides
Linux Internals - Part III by
Linux Internals - Part IIILinux Internals - Part III
Linux Internals - Part IIIEmertxe Information Technologies Pvt Ltd
2.9K views39 slides
Bootstrap process of u boot (NDS32 RISC CPU) by
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)Macpaul Lin
13.8K views59 slides

What's hot(20)

U-Boot presentation 2013 by Wave Digitech
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013
Wave Digitech18.7K views
Bootstrap process of u boot (NDS32 RISC CPU) by Macpaul Lin
Bootstrap process of u boot (NDS32 RISC CPU)Bootstrap process of u boot (NDS32 RISC CPU)
Bootstrap process of u boot (NDS32 RISC CPU)
Macpaul Lin13.8K views
Part 02 Linux Kernel Module Programming by Tushar B Kute
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
Tushar B Kute3.6K views
Linux kernel debugging by libfetion
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
libfetion10.3K views
Arm device tree and linux device drivers by Houcheng Lin
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin17.5K views
Embedded_Linux_Booting by Rashila Rr
Embedded_Linux_BootingEmbedded_Linux_Booting
Embedded_Linux_Booting
Rashila Rr513 views
Browsing Linux Kernel Source by Motaz Saad
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
Motaz Saad7K views
Device Tree for Dummies (ELC 2014) by Thomas Petazzoni
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
Thomas Petazzoni1.7K views

Similar to Toolchain

gcc and friends by
gcc and friendsgcc and friends
gcc and friendsAnil Kumar Pugalia
14.3K views11 slides
From gcc to the autotools by
From gcc to the autotoolsFrom gcc to the autotools
From gcc to the autotoolsThierry Gayet
604 views61 slides
C# Production Debugging Made Easy by
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made EasyAlon Fliess
4K views35 slides
Purdue CS354 Operating Systems 2008 by
Purdue CS354 Operating Systems 2008Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008guestd9065
5K views585 slides
An Overview of the IHK/McKernel Multi-kernel Operating System by
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating SystemLinaro
2.8K views24 slides
Advance Android Application Development by
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application DevelopmentRamesh Prasad
3.3K views43 slides

Similar to Toolchain(20)

From gcc to the autotools by Thierry Gayet
From gcc to the autotoolsFrom gcc to the autotools
From gcc to the autotools
Thierry Gayet604 views
C# Production Debugging Made Easy by Alon Fliess
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
Alon Fliess4K views
Purdue CS354 Operating Systems 2008 by guestd9065
Purdue CS354 Operating Systems 2008Purdue CS354 Operating Systems 2008
Purdue CS354 Operating Systems 2008
guestd90655K views
An Overview of the IHK/McKernel Multi-kernel Operating System by Linaro
An Overview of the IHK/McKernel Multi-kernel Operating SystemAn Overview of the IHK/McKernel Multi-kernel Operating System
An Overview of the IHK/McKernel Multi-kernel Operating System
Linaro2.8K views
Advance Android Application Development by Ramesh Prasad
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
Ramesh Prasad3.3K views
Embedding Qt by FSCONS
Embedding QtEmbedding Qt
Embedding Qt
FSCONS1.3K views
Dot netsupport in alpha five v11 coming soon by Richard Rabins
Dot netsupport in alpha five v11 coming soonDot netsupport in alpha five v11 coming soon
Dot netsupport in alpha five v11 coming soon
Richard Rabins411 views
The Ten (10) Best C/C++ Productivity Tools, Plugins and Libraries by livecoding123
The Ten (10) Best C/C++ Productivity Tools, Plugins and LibrariesThe Ten (10) Best C/C++ Productivity Tools, Plugins and Libraries
The Ten (10) Best C/C++ Productivity Tools, Plugins and Libraries
livecoding123342 views
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019 by corehard_by
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
The Hitchhiker's Guide to Faster Builds. Viktor Kirilov. CoreHard Spring 2019
corehard_by5.1K views
Autotools pratical training by Thierry Gayet
Autotools pratical trainingAutotools pratical training
Autotools pratical training
Thierry Gayet677 views
DevOps(4) : Ansible(2) - (MOSG) by Soshi Nemoto
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
Soshi Nemoto851 views
Life of a Chromium Developer by mpaproductions
Life of a Chromium DeveloperLife of a Chromium Developer
Life of a Chromium Developer
mpaproductions1.9K views
Dotnet basics by Mir Majid
Dotnet basicsDotnet basics
Dotnet basics
Mir Majid 116K views
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L... by melbats
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
EclipseCon Eu 2012 - Buildroot Eclipse Bundle : A powerful IDE for Embedded L...
melbats219 views

More from Anil Kumar Pugalia

File System Modules by
File System ModulesFile System Modules
File System ModulesAnil Kumar Pugalia
21K views37 slides
Kernel Debugging & Profiling by
Kernel Debugging & ProfilingKernel Debugging & Profiling
Kernel Debugging & ProfilingAnil Kumar Pugalia
6K views14 slides
Processes by
ProcessesProcesses
ProcessesAnil Kumar Pugalia
7K views33 slides
System Calls by
System CallsSystem Calls
System CallsAnil Kumar Pugalia
4.2K views17 slides
Introduction to Linux by
Introduction to LinuxIntroduction to Linux
Introduction to LinuxAnil Kumar Pugalia
4K views33 slides
Embedded C by
Embedded CEmbedded C
Embedded CAnil Kumar Pugalia
25.7K views20 slides

More from Anil Kumar Pugalia(20)

Recently uploaded

GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...James Anderson
142 views32 slides
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesShapeBlue
178 views15 slides
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...ShapeBlue
128 views20 slides
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...ShapeBlue
97 views28 slides
DRBD Deep Dive - Philipp Reisner - LINBIT by
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBITShapeBlue
110 views21 slides
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericShapeBlue
58 views9 slides

Recently uploaded(20)

GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson142 views
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates by ShapeBlue
Keynote Talk: Open Source is Not Dead - Charles Schulz - VatesKeynote Talk: Open Source is Not Dead - Charles Schulz - Vates
Keynote Talk: Open Source is Not Dead - Charles Schulz - Vates
ShapeBlue178 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ... by ShapeBlue
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
How to Re-use Old Hardware with CloudStack. Saving Money and the Environment ...
ShapeBlue97 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue110 views
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ by ShapeBlue
Confidence in CloudStack - Aron Wagner, Nathan Gleason - AmericConfidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
Confidence in CloudStack - Aron Wagner, Nathan Gleason - Americ
ShapeBlue58 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue69 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue68 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc130 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue86 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue191 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue81 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue105 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty54 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT by ShapeBlue
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
ShapeBlue138 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue147 views

Toolchain

  • 1. Toolchain © 2010-14 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved.
  • 2. What to Expect? W's of a Toolchain W's & How's of Cross Toolchain? Building a Cross Toolchain Testing a Cross Toolchain © 2010-14 SysPlay Workshops <workshop@sysplay.in> 2 All Rights Reserved.
  • 3. What is a Toolchain? Collection of Tools In Embedded context Collection of C Compiler & its Friends Categorized under 3 umbrella C Compiler (gcc) Set of C Libraries (e.g. glibc, uClibc) Binary Utilities (binutils) © 2010-14 SysPlay Workshops <workshop@sysplay.in> 3 All Rights Reserved.
  • 4. Check on gcc How do you do the following? Generate Object Code Generate Assembly Code Generate Pre-processed Code Generate a Shared Library Adding Header Path Adding Library Path Linking a Library Excluding standard includes & libraries Adding a “#define” © 2010-14 SysPlay Workshops <workshop@sysplay.in> 4 All Rights Reserved.
  • 5. gcc Internals .c .i IC (parse trees, ...) .S .o .exe © 2010-14 SysPlay Workshops <workshop@sysplay.in> 5 All Rights Reserved. Pre Processor ICG (machine independent) ICG (machine dependent) Assembler (as) Linker (ld) gcc core gcc wrapper gcc -S gcc -c gcc gcc -E
  • 6. Set of C Libraries Generally useful Libraries C, Math, Thread, Socket, … Various Options glibc Complete featured but heavy on memory Highly standard compatible uClibc Light-weight with mostly same features But not that much standards compatible Diet libc Similar to uClibc, just that this has been done from scratch Emphasis on minimizing size & optimizing performance © 2010-14 SysPlay Workshops <workshop@sysplay.in> 6 All Rights Reserved.
  • 7. Binary Utilities as – GNU Assembler ld – GNU Linker gasp – GNU Assembler Pre-processor ar – Creates & Manipulates Archives nm – Lists the symbols in an Object file objcopy – Copies & Translates Object files objdump – Displays info about Content of the Object files ranlib – Generates an index to the content of Object files readelf – Displays info about an ELF format Object file size – Lists the sizes of sections within an Object file strings – Prints the strings of printable characters in Object files strip – Strips symbols from Object files c++filt – Converts low-level, mangled assembly labels resulting from overloaded C++ functions to their user-level names addr2line – Converts addresses into line numbers within original source files © 2010-14 SysPlay Workshops <workshop@sysplay.in> 7 All Rights Reserved.
  • 8. What is Cross? gcc Example: gcc vs cross gcc src Host Native gcc Target Native gcc © 2010-14 SysPlay Workshops <workshop@sysplay.in> 8 All Rights Reserved. Host prog src Host exe prog Target Tgt exe prog Cross gcc
  • 9. What is a Cross Toolchain? Toolchain which has all “cross” tools © 2010-14 SysPlay Workshops <workshop@sysplay.in> 9 All Rights Reserved.
  • 10. Why we need a Cross Toolchain? Embedded Systems are constrained Toolchain demands heavy memory & performance May not always have a console interface Even if there, may be minimal Ease of Development Complete accustomed Development Environment on the Host Favourite Editors, GUIs, … © 2010-14 SysPlay Workshops <workshop@sysplay.in> 10 All Rights Reserved.
  • 11. How to get a Cross Toolchain? Get it pre-compiled from vendors Popular: Code sourcery Local: Requirement specific Build your own Doing it manually is a complicated process Inter Package version compatibility is the biggest challenge But various automated tools are available today to simplify the process © 2010-14 SysPlay Workshops <workshop@sysplay.in> 11 All Rights Reserved.
  • 12. Automated Build Tools Crosstool crosstool-ng.org Buildroot buildroot.org Ptxdist ptxdist.org © 2010-14 SysPlay Workshops <workshop@sysplay.in> 12 All Rights Reserved.
  • 13. Cross Toolchain Building Overview Build of various GNU Packages involved Typical Build Steps for these Packages Download & Unpack the source of the Package Configure the Package for Cross-Platform Development Build the Package (make) Install the Package (make install) Configuring involves setting up build, host, target ./configure build=... host=... target=... Using Triplet: cpu[-manufacturer][-kernel][-os/obj_file_fmt] Examples: i386-pc-linux-gnu, xscale-sun-solaris2.5/elf Tool Prefix: Same as the triplet © 2010-14 SysPlay Workshops <workshop@sysplay.in> 13 All Rights Reserved.
  • 14. Cross Toolchain Headers © 2010-14 SysPlay Workshops <workshop@sysplay.in> 14 All Rights Reserved. Linux Kernel Headers User Specific Headers extract C Library Headers User Space Headers From the Kernel Sources /usr/include
  • 15. Cross Toolchain Component Dependency Cross Full gcc (gcc, g++) kernel hdrs library hdrs © 2010-14 SysPlay Workshops <workshop@sysplay.in> 15 All Rights Reserved. Native gcc Cross binutils Cross bootstrap gcc (xgcc) Target Libraries binutils gcc library Source Code src
  • 16. Cross Toolchain Building Steps Set up Linux Kernel Headers Ideally from the Kernel version being used Commands make ARCH=<arch> headers_check make ARCH=<arch> INSTALL_HDR_PATH=install_dir/ headers_install Build Binary Utilities Build the bootstrap Compiler (The C only Compiler) Build the C Library Build the full Compiler © 2010-14 SysPlay Workshops <workshop@sysplay.in> 16 All Rights Reserved.
  • 17. Building a Toolchain using Crosstool Install the Crosstool cd cross-tool-ng ./configure –prefix=/opt/board/ make make install cp ct-ng.comp /etc/bash_completion.d/ export PATH=$PATH:/opt/board/bin/ © 2010-14 SysPlay Workshops <workshop@sysplay.in> 17 All Rights Reserved.
  • 18. Building a Toolchain using Crosstool Build the Toolchain mkdir ct-build src cd ct-build/ mkdir .build cp Templates/Toolchain/sources.tgz .build/ (available from Downloads section of http://sysplay.in) ct-ng menuconfig ct-ng build © 2010-14 SysPlay Workshops <workshop@sysplay.in> 18 All Rights Reserved.
  • 19. Testing a Cross Toolchain Compile a C program to various stages Pre-process only Get Assembly Get Object Get Executable Compile a C program with headers Compile a C program with linking libraries Create a C Program with floating point operations Execute & Test the generated target programs Toolchain “Self Contained” Test © 2010-14 SysPlay Workshops <workshop@sysplay.in> 19 All Rights Reserved.
  • 20. What all have we learnt? W's of a Toolchain Compiler Binary Utilities Set of C Libraries W's & How's of Cross Toolchain? Building a Cross Toolchain Building Steps Automated Build Tools Testing a Cross Toolchain © 2010-14 SysPlay Workshops <workshop@sysplay.in> 20 All Rights Reserved.
  • 21. Any Queries? © 2010-14 SysPlay Workshops <workshop@sysplay.in> 21 All Rights Reserved.