====== Setting up a complete development environment in C++ for Raspberry PI ====== ===== Intro ===== I wanted to do some development for the Raspberry PI. So, my first idea is to use c++ for the task, and use it from my laptop, instead of using the ssh and the oldies development environments. I prefer to use a decent IDE (Eclipse for C++) for the task, and debug remotely from my So, the objectives are: - To develop in C++ for the Raspberry PI - To do it in eclipse, in my computer - To compile in my computer, and debug remotely in the Raspberry PI - Moreover, to use libraries specifically compiled for the raspberry pi (log4cpp, libconfig) This setting will configure a development environment optimal for develop and create programs in the raspberry pi. ===== Previous considerations ===== Previous tasks I did in my raspberry pi: - Configure other user than pi, and delete the original pi user - Configure static IP ===== Install eclipse ===== First, install the Java Runtime Environment by doing: # sudo apt-get install openjdk-8-jdk And then, install the eclipse: I've went to [[http://www.eclipse.org/downloads/]] and located [[http://www.eclipse.org/cdt/|Eclipse CDT]] (specific for development in C/C++) and install it. ===== Install the cross compiler ===== The "good" cross compiler is the one that comes in the [[https://www.raspberrypi.org/documentation/linux/kernel/building.md|Raspberry Pi kernel building]] instructions: reject other recipes that simply are for other boards/architectures (boards with arithmetic coprocesor, and things like that). As it says in the webpage, can download it at [[https://github.com/raspberrypi/tools]]. I've downloaded the tools in ~/tools-master. So, because my linux system is 64 bits, the path for the compiler is in ''~/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin''. ===== Create your first project in eclipse ===== Don't forget the path in the previous step, because you will need to create your first hello world project in eclipse. Let's go for it: first, open eclipse and click on "File -> New -> C/C++ Project": {{ :raspberrypi:step01.png?nolink&600 |}} Then, pick up "C++ Managed build" or "C Managed buid", whichever you prefer. I've chosen C++ Managed build: {{ :raspberrypi:step02.png?nolink&600 |}} Next, I've selected the empty project and, very important, pick up "Cross GCC" to select a cross compiler: {{ :raspberrypi:step03.png?nolink&600 |}} On the screen that appears, you can click on next: {{ :raspberrypi:step04.png?nolink&600 |}} This is the important part: when you have to select the g++ cross compiler. In the previous section I've spotted that and took note of the path and the prefix to use here: {{ :raspberrypi:step05.png?nolink&600 |}} However, if you are unsure which to use, you can try several. A good option is to try to execute the cross compiler to see if it runs: at least it has to execute properly in your computer. At the end, this is a cross compiler, isn't it? Finally, you will get the project on eclipse: {{ :raspberrypi:step06.png?nolink&600 |}} Then, right-click on new -> source file and tye something like this: /* * main.cpp * * Created on: 31 mar. 2018 * Author: dictinio */ #include int main( int argc, char *argv[] ) { std::cout << "hello world!!!" << std::endl; } And compile it. At this point it's very important to have some experience with C++ and/or eclipse. It's not the purpose of this tutorial to teach you to use the eclipse IDE, to do that, probably you will have to read other tutorials. ===== Compile and run ===== Build the program and copy it to your raspberry: it should run smoothly in the raspi. Obviously, it won't execute locally. ===== Execute and run in the raspberry pi remotely ===== Eclipse CDT has facilities to move every build in the raspberry pi and execute it remotely. NEXT STEP: debug remotely.