My Developemnt Environment
Harry Tanama

Harry Tanama @harry_tanama_51571ebf90b6

About: Software Engineer building game engines from scratch using C/C++ with SDL2 and SFML, understanding Graphics APIs, 3D Math, data structures, and algorithms.

Joined:
Nov 17, 2024

My Developemnt Environment

Publish Date: Jul 6
0 0

My Linux Developemnt Environment:

Core Compilation Tools to build application from the srouce code:

GNU - GCC Compiler
https://gcc.gnu.org/

gcc (GNU Compiler Collection): The most important tool. It is the primary compiler for C and C++ and is required for compiling most source code.

g++ (C++ Compiler): The C++ equivalent of gcc.

GNU Make
https://www.gnu.org/software/make/
make: This utility is a build automation tool. It reads a Makefile (a file written by the software's developer) and executes the commands needed to compile the source code, link the different parts, and build the final executable.

GNU Autoconf
Autoconf is an extensible package of M4 macros that produce shell scripts to automatically configure software source code packages.
https://www.gnu.org/software/autoconf/

sudo pacman -S autoconf
Enter fullscreen mode Exit fullscreen mode

GNU Automake
GNU Automake is a tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. Automake requires the use of GNU Autoconf.
https://www.gnu.org/software/automake/

sudo pacman -S automake
Enter fullscreen mode Exit fullscreen mode

Git - https://git-scm.com/
Git is a distributed version control system used to track changes in files, especially useful for collaborative software development. It allows multiple developers to work on the same project simultaneously, managing different versions of code and facilitating code merging.

sudo pacman -S git
Enter fullscreen mode Exit fullscreen mode

What's the difference between glibc and libc6?
http://www.linux-m68k.org/faq/glibcinfo.html

libc is the C library; basically, it contains all of the system functions that most (if not all) programs need to run on Linux.

libc6-dev: The development headers and libraries for the GNU C Library. These are crucial for building C programs.

glibc: short for the GNU C Library, is a fundamental software component in Linux systems. It's the standard C library that provides essential functions and system calls for applications to interact with the operating system. In essence, it acts as a bridge between programs and the underlying Linux kernel


GNU Binutils
https://www.gnu.org/software/binutils/
binutils Binary utilities (linker, assembler, etc.)

sudo pacman -S binutils
Enter fullscreen mode Exit fullscreen mode

Emacs (Powerful Editor for Programmer)

sudo apt install emacs
Enter fullscreen mode Exit fullscreen mode

Neovim
https://neovim.io/

LazyVim
https://www.lazyvim.org/installation

tmux
https://github.com/tmux/tmux

sudo apt install tmux
Enter fullscreen mode Exit fullscreen mode

Obsidian
https://obsidian.md/

VIM

sudo apt install vim
Enter fullscreen mode Exit fullscreen mode

VIM Colorscheme - https://github.com/vim/colorschemes/tree/master/colors

Debian, Ubuntu, Mint
Build Essential: gcc, g++, make

sudo apt install build-essential cmake -y
Enter fullscreen mode Exit fullscreen mode

Arch, CachyOS, Manjaro

sudo pacman -S base-devel
Enter fullscreen mode Exit fullscreen mode

Cmake - https://cmake.org/
CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. It’s a powerful, comprehensive solution for managing the software build process. Get everything you need to successfully leverage CMake by visiting our resources section.

sudo pacman -S cmake
Enter fullscreen mode Exit fullscreen mode

Python

sudo apt install python3-dev
Enter fullscreen mode Exit fullscreen mode

clang - (compiler C/C++ language family)

sudo apt install clang
Enter fullscreen mode Exit fullscreen mode

clangd - (language server for code completion, semantic navigation, go to definition, etc - better than Microsoft IntelliSense for Cross Platform)

sudo apt install clangd
Enter fullscreen mode Exit fullscreen mode

Screenkey ver 1.5
https://www.thregr.org/wavexx/software/screenkey/

-- MAYBE PACKAGES ---

VSCodium
https://vscodium.com/

sudo apt install codium -y
Enter fullscreen mode Exit fullscreen mode

You-Completeme - code completion

sudo apt list vim-youcompleteme
Enter fullscreen mode Exit fullscreen mode

a comprehensive development environment on Linux. A solid base of essential packages can save you a lot of time and hassle. While the specific package names may vary slightly between distributions, the core tools are almost always the same.

The following list provides the essential packages you'll need, organized into logical groups. This list is a good starting point for a wide range of development tasks.

1. Core Build Tools (The "Build Essentials")

These are the fundamental tools for compiling, linking, and building software from source.

  • make: A utility that controls the generation of executables and other files from source files. It's the standard build automation tool.
  • gcc or clang: The primary C/C++ compilers. Most projects are built using one of these. gcc is the GNU Compiler Collection, while clang is another popular option.
  • binutils: A collection of binary tools, including a linker (ld), assembler (as), and other utilities for working with object files and executables.
  • pkg-config: A tool that helps manage and link against libraries. It finds the correct compiler and linker flags for installed libraries.
  • git: The standard version control system for tracking changes in source code. It's an absolute must for any modern development project.

Arch Linux command to install all of the above:

sudo pacman -S base-devel git
Enter fullscreen mode Exit fullscreen mode

Note: The base-devel meta-package includes make, gcc, binutils, and pkg-config.

2. Common Libraries and Headers

Many programs rely on common libraries. You need the header files for these libraries to compile against them.

  • glibc or lib32-glibc: The GNU C Library, a core dependency for almost all C programs. You'll often need the 32-bit version for cross-compiling.
  • libx11 and xorg-server: For any graphical applications using the X Window System.
  • zlib: A standard compression library used by many programs.
  • openssl: The toolkit for SSL/TLS protocols and cryptography. Essential for any secure networking application.
  • curl and wget: Command-line tools and libraries for transferring data. Many applications use their libraries to handle network requests.

Arch Linux example:

sudo pacman -S zlib openssl curl xorg-server libx11
Enter fullscreen mode Exit fullscreen mode

3. Scripting Languages

While not strictly required for compiling C/C++ programs, these languages are essential for writing scripts, build tools, and automating tasks.

  • python: The default Python 3 interpreter. Python is widely used in development for scripting, testing, and various tools.
  • python-pip: The package installer for Python, which you will need to install any third-party Python libraries.

Arch Linux example:

sudo pacman -S python python-pip
Enter fullscreen mode Exit fullscreen mode

4. Text Editors and IDEs

A good text editor is central to any development workflow.

  • vim or neovim: A powerful, keyboard-driven text editor popular among developers.
  • emacs: Another highly configurable and popular text editor.
  • vscode or codium: A popular, full-featured code editor with a massive ecosystem of extensions.

Arch Linux example:

sudo pacman -S neovim emacs
Enter fullscreen mode Exit fullscreen mode

Note: vscode and codium are often available in the AUR (Arch User Repository).

5. Debugging and Profiling

These tools are crucial for finding and fixing bugs and optimizing performance.

  • gdb: The GNU Project Debugger. A standard for debugging programs written in C, C++, and other languages.
  • strace: A tool to trace system calls and signals. Useful for diagnosing problems with programs that interact with the kernel.
  • valgrind: A powerful memory debugging, memory leak detection, and profiling tool.

Arch Linux example:

sudo pacman -S gdb strace valgrind
Enter fullscreen mode Exit fullscreen mode

My Windows Developemnt Environment:

Visual Studio Community (MSVC)
https://visualstudio.microsoft.com/vs/community/

Visual Studio Code
https://code.visualstudio.com/

VCPKG
https://vcpkg.io/en/

CMake - build tool
https://cmake.org/download/

Clang is an "LLVM native" C/C++/Objective-C compiler
https://llvm.org/

VIM - highly configurable, text-based text editor
https://www.vim.org/download.php

vim-plug - Vim Plugin Manager
https://www.vim.org/scripts/script.php?script_id=4828

Install YouCompleteMe from vim-plug and run the python script

Universal Ctags - generates an index, makes it easy for vim text editor to locate the indexed items.
https://github.com/universal-ctags/ctags-win32

GIT- a distributed version control system
https://git-scm.com/downloads

TortoiseGit – Windows Shell Interface to Git
https://tortoisegit.org/download/

SDL2 - Simple DirectMedia Layer
https://www.libsdl.org/

SFML - Simple and Fast Multimedia Library
https://www.sfml-dev.org/download/

MSYS2 is a collection of tools and libraries (GCC, mingw-w64)
https://www.msys2.org/

Python
https://www.python.org/

WSL - Windows Subsystem for Linux
https://learn.microsoft.com/en-us/windows/wsl/install
For WSL environment See Linux Development Environment

Zoomit - is a screen zoom, annotation, and recording tool for technical presentations and demos.
https://learn.microsoft.com/en-us/sysinternals/downloads/zoomit

Comments 0 total

    Add comment