Toolchain, And Cross Development

Topics

An overview of the toolchain is given - a collection of tools (compiler, linker, …) to transform C/C++ source code into running executables.

This is followed by an introduction to CMake, a higher level build tool that solves many problems that both hand-written Makefile hacks and IDE-clickabout builds have.

Last, a bit more involved, we see how cross development is done. Together with SSH: Secure Shell, this enables us to build software for devices that show a different architecture that the development machine.

Exercises

Dependencies

cluster_linux Linux cluster_linux_toolchain Toolchain, And Cross Development cluster_linux_toolchain_raspi Case Study: Raspberry Toolchain cluster_linux_toolchain_exercises Exercises: Toolchain cluster_linux_toolchain_cross Cross Development cluster_linux_basics Linux Basics cluster_linux_basics_shell The Shell (Bash - “Bourne Again Shell”) cluster_linux_basics_intro Introduction: Concepts and Terminology cluster_linux_basics_archiving_compression Archiving and Compression cluster_linux_ssh SSH: Secure Shell linux_toolchain_cmake_local CMake: Local Build linux_toolchain_static_library Object Code Archives/Static Libraries linux_toolchain_cmake_local->linux_toolchain_static_library linux_toolchain_separate_compilation Zooming In: Separate Compilation, and Linking Statically linux_toolchain_static_library->linux_toolchain_separate_compilation linux_toolchain_basics Toolchain: Basics linux_toolchain_separate_compilation->linux_toolchain_basics linux_toolchain_cmake_cross CMake: Cross Build linux_toolchain_cmake_cross->linux_toolchain_cmake_local linux_basics_shell_file_dir_create_rm Creating And Removing Files and Directories linux_toolchain_basics->linux_basics_shell_file_dir_create_rm linux_toolchain_shared_library Shared Libraries (Shared Objects) linux_toolchain_shared_library->linux_toolchain_static_library linux_basics_intro_environment Environment (Variables) linux_toolchain_shared_library->linux_basics_intro_environment linux_toolchain_raspi_linaro_pi Linaro Toolchain For The Pi (Defunct) linux_toolchain_cross_basics Cross Development linux_toolchain_raspi_linaro_pi->linux_toolchain_cross_basics linux_toolchain_raspi_linaro_pi->linux_basics_intro_environment linux_basics_archiving_compression_tar tar linux_toolchain_raspi_linaro_pi->linux_basics_archiving_compression_tar linux_ssh_scp SSH: Secure Copy (scp) linux_toolchain_raspi_linaro_pi->linux_ssh_scp linux_ssh_basics SSH: Basics linux_toolchain_raspi_linaro_pi->linux_ssh_basics linux_toolchain_raspi_details Building A Cross Toolchain For The Raspberry Pi, Using crosstool-ng linux_toolchain_raspi_details->linux_toolchain_cross_basics linux_toolchain_raspi_details->linux_basics_intro_environment linux_toolchain_raspi_details->linux_basics_archiving_compression_tar linux_toolchain_raspi_details->linux_ssh_scp linux_toolchain_raspi_details->linux_ssh_basics linux_toolchain_raspi_docker_fedora_wsl Building A Toolchain On Fedora For Ubuntu 18.04 (WSL) linux_toolchain_raspi_docker_fedora_wsl->linux_toolchain_raspi_details linux_toolchain_raspi_toolchain_setup Cross Toolchain Setup linux_toolchain_raspi_toolchain_setup->linux_toolchain_cross_basics linux_toolchain_exercises_raspberry_toolchain Exercise: Install And Check Raspberry Toolchain linux_toolchain_exercises_raspberry_toolchain->linux_toolchain_basics linux_toolchain_exercises_raspberry_toolchain->linux_toolchain_cross_basics linux_toolchain_exercises_cross_build Exercise: Build Software Package (Cross, Raspberry) linux_toolchain_exercises_cross_build->linux_toolchain_static_library linux_toolchain_exercises_cross_build->linux_toolchain_raspi_toolchain_setup linux_toolchain_exercises_native_build Exercise: Build Software Package (Native) linux_toolchain_exercises_native_build->linux_toolchain_static_library linux_toolchain_exercises_fh_moodle_quiz FH/Moodle Quiz: Toolchain linux_toolchain_exercises_fh_moodle_quiz->linux_toolchain_separate_compilation linux_toolchain_exercises_fh_moodle_quiz->linux_toolchain_basics linux_toolchain_cross_basics->linux_toolchain_basics linux_basics_shell_cwd Current Working Directory linux_basics_shell_paths Absolute and Relative Paths linux_basics_shell_cwd->linux_basics_shell_paths linux_basics_shell_commandline Commandline linux_basics_shell_cwd->linux_basics_shell_commandline linux_basics_intro_process Processes, Scheduling, Address Spaces linux_basics_shell_cwd->linux_basics_intro_process linux_basics_shell_file_dir_create_rm->linux_basics_shell_cwd linux_basics_shell_file_dir_create_rm->linux_basics_shell_paths linux_basics_shell_paths->linux_basics_shell_commandline linux_basics_intro_overview Overview linux_basics_shell_commandline->linux_basics_intro_overview linux_basics_intro_environment->linux_basics_intro_process linux_basics_intro_process_tree Process Hierarchy (Parent, Child Process) linux_basics_intro_process_tree->linux_basics_intro_process linux_basics_intro_login Login? What Is That? linux_basics_intro_login->linux_basics_intro_process_tree linux_basics_intro_process->linux_basics_intro_overview linux_basics_archiving_compression_gzip gzip linux_basics_archiving_compression_gzip->linux_basics_shell_commandline linux_basics_archiving_compression_overview Archiving and Compression linux_basics_archiving_compression_gzip->linux_basics_archiving_compression_overview linux_basics_archiving_compression_tar->linux_basics_shell_commandline linux_basics_archiving_compression_tar->linux_basics_archiving_compression_gzip linux_basics_archiving_compression_overview->linux_basics_shell_commandline linux_ssh_scp->linux_ssh_basics linux_ssh_basics->linux_basics_intro_login