C++ and Linux

Hello guys,

I'm an intermediate-level programmer of C++ and have recently started studying Qt, QML and OpenGL. Since they are mostly using C++, the task is not that bewildering.

About Linux and its flavor Ubuntu, I have little knowledge about it. It may take some time to be skilled on it and use the command line well.

What now? Well, I at times see employers list several items as requirements for employees that include working on Linux by C++ or using C++ on/for Linux. To be honest, I can't understand completely that what they really mean, but whatever it is, it's something popular and required for getting good jobs regarding C++ programmers.
Would you please guide me? What they mean and what is the relationship between C++ and Linux?

PS: I wanted to post this query on the UNIX/Linux category but the system doesn't get my question and it says it moves it to the main page of the site!! If possible please move this question to that category.
Last edited on
You must know Linux features well as well as C++. Familiarize yourself with all Linux OS commands.

For C++, you must know C++ features (including the Standard Library) as well as a UI and how to connect to an RDBMS (as well as the RDBMS features).

For the UI, you are familiarizing yourself with Qt.

As stated, you also need to work with an RDBMS (such as ORACLE) and learn how to connect to it using C++. Oracle provides a library for this.

You should also know how to Install an executable, for which you should learn about Software Installers.
> using C++ on/for Linux.
> What they mean and what is the relationship between C++ and Linux?

In addition to knowing C++ (which is the same everywhere), you need:
a. Familiarity with the tool chains that are used in Linux (compiler, linker, make utilities autotools etc.)
b. Familiarity with creating/using libraries in Posix http://tldp.org/HOWTO/Program-Library-HOWTO/index.html
c. Familiarity with using the shell and basic Posix utilities
d. Introductory awareness of the Posix API https://en.wikipedia.org/wiki/POSIX

The painless way to learn these would be to start using a Posix development environment. For example, a respectable Linux distro (for instance, Debian or Slackware) or an emulator (for instance, Cygwin on Windows)
Familiarize yourself with all Linux OS commands.
By this I think you meant all cmd/Terminal commands. I'm going on the way.

For C++, you must know C++ features (including the Standard Library) as well as a UI and how to connect to an RDBMS (as well as the RDBMS features).
Qt which is itself based on C++ for programming offers a way to create apps as well as connecting to DBes. But I've not reach those sections yet.

You should also know how to Install an executable, for which you should learn about Software Installers.
I using Qt Installer Framework have made installers for a few GUI applications to be installed on Windows. There were successfully done.

Thank you for your comments, I got some things from that, but I don't see the relationship between C++ and Linux yet. All of the above works can be done using C++ and Windows for example.

Why do companies want both (C++ and Linux) skills? Probably they assign two separate tasks for them, i.e, the C++ programmer for creating apps and a (super) user of Linux to work on it using Terminal. And it's not necessary to have one task that needs the two skills to be done together on a system.
Last edited on
When you work on any system as a programmer, you need to know (i) a programming language and (ii) the OS commands.

The OS commands will be used for such tasks as managing files (creating, copying, deleting, sorting, etc.). While it is true you could possibly use a language for these tasks (by, for example, opening a file in a program), one also needs to perform these tasks using the OS. Programmers may need to write command files that use these OS commands to perform these tasks.

OS commands will also be used for manging the OS environment (processes, users, jobs, etc.) These tasks typically will be performed by the System Administrator / Operators.
In addition to knowing C++ (which is the same everywhere), you need:
a. Familiarity with the tool chains that are used in Linux (compiler, linker, make utilities autotools etc.)
b. Familiarity with creating/using libraries in Posix http://tldp.org/HOWTO/Program-Library-HOWTO/index.html
c. Familiarity with using the shell and basic Posix utilities
d. Introductory awareness of the Posix API https://en.wikipedia.org/wiki/POSIX

The painless way to learn these would be to start using a Posix development environment. For example, a respectable Linux distro (for instance, Debian or Slackware) or an emulator (for instance, Cygwin on Windows)
Thanks, you actually answered my next question at the end of your advice, i.e, where to start?

So if we consider the process of achieving those skills which are needed for a C++ programmer to get the job, a linear procedure, we can start learning Debian. Two questions here: I've got a little background on Ubuntu, should I begin learning Debian instead of that or is Ubuntu well as well?
Two: Whether it's Ubuntu or Debian, do you agree with me that the best way (when someone hasn't an instructor) for learning is using books?

@SSteven:
Programmers may need to write command files that use these OS commands to perform these tasks.
You're talking about commands in OSes, what commands do you mean please? For instance, we can have any commands by GUI in an OS like Windows. But I assume you're talking about CMD commands on Windows or Terminal commands on Linux. True?

Last edited on
Not to distract from anything said so far. Just my own insight.

Why the need to know Linux? Some people feel it is easier to develop in Linux than it is in Windows. I am more comfortable working on code in a Linux environment than in a Windows environment. There is actually 1 program I have been maintaining that run in a Windows environment, but I do much of the non-interface work in Linux, accessing the code on a shared drive.

So, the software shops that are requesting knowledge of Linux may do all of their development in a Linux environment, even if they cross-compile to other OSes. Using Linux as a development environment means you need to understand how to use terminal commands, tool chains, etc. in Linux.

HOWEVER: it is VERY LIKELY that they are also developing applications that are intended to run in Linux. This demonstrates the need to understand the libraries specific to Linux.

And Ubuntu is fine for learning Linux. It's actually the environment we use for development here where I work. There is no inherent reason to switch to another Linux distribution (unless you identify a specific need to do so).
Thank you all very much. I appreciate your help.
Topic archived. No new replies allowed.