develop critical software for linux target

hi everyone.

i'm new to linux. i'm going to develop a critical software that gets data through lan and show it graphically. after searching i decided to use linux kernel + rtai to be my Real-Time language is only c++.

now to develop software i have 2 options:

1- as a windows and vs2010 programmer, i leave windows and move to a linux distribution and develop software using a good ide that i don't know well...

2- i stay in windows and use to cross-compile for linux target using some cross-compile tools...

the first option is better for me because i have many other windows-based tools that i don't want to loose them but if i have to, i'll handle it.

now my question is which one i choose? what about the performance and reliability? which one has more performance and reliability as it required for critical software? is it important to be linux- host developped or windows cross-compile?

and the way you gus propose me please tell me how and with which development tools and ide i could do that.

thank u.
It's all good to describe your software as critical software, but what are your actual requirements?

Linux vs Windows vs ... How did you manage to choose Linux in the first place?
the target os is a RT Linux not only linux. linux + rtai

now development os could be windows with cross compiling or linux as native compiling.

software should be real-time so reliability is important. people on net suggest qt or gtk or ... but others say to use mingw or cmake or ...

now i want to choose best development envirement... being in windows has less affort but moving to linux has much more new staff.

now what is best choice for my requirement?
Using qt and gtk has nothing to do with cmake or mingw.

I can't guess what you want to achieve, but it will probably be best for you, if you move to Linux(probably dual-boot) for the purpose of this project - you will understand Linux better and be able to test your program right away. As for good IDE, I'd go with Code::Blocks, although many people just use highly personalized text editors, like vim or emacs, however that's even more stuff to learn.
Why not just develop on Linux?
thank you for reply.

the reason that i don't want to move to linux is just i have programmed for 6 years using visual studio and i never used linux although i used to work with red hat a little. moving to linux need lots of time to spend to learn. working with commands and installing packages with difficulties and ....

also i want to buy a code analyzer like qa.c++ to analuze my code against misra c++ coding standard. now i must decide for which os i buy the software. linux or windows.

if developing and testing and analyzing my code will not have problem in reliability and performance and the builded binary for linux can be run on linux without any changes then staying in windows is better for me but if there is a little problem in running or development get slower and needs swapping between os's every time a change happens, then it worth to move to linux and buy software packages for linux.

this is a decision that needs expeirence that i dont have and made me to ask it here.

GTK+ and QT and wxWidgets are ide's that are cross compiler. i got that i can stay in windows and write code in these ide's and build linux binary using them and then move the binary to linux and run it without any problem. if it is so. then it would be geart. but if it's not then i'll move to linux and start new age of my programming in linux..
Last edited on
I have long experience on both. I suggest you bite the bullet, move your development to Linux if that's your target platform.

KDevelop will be familiar to any Visual Studio user. You'll have to learn some stuff about the platform, but it's stuff you'll need to know anyway and will keep.

Performance tuning is different as Linux is sometimes too clever for its own good (but not clever enough). You generally start off assuming that a Windows program can be improved substantially, so start looking at performance metrics pretty early on.
ok. i think i should make my decision. let's say i get linux kernel and install RTAI on it to be my target os.

if my host is a linux distro like ubuntu or debian, my compiler is gcc and ide is QT or Kdevelop or wxWidgets or code blocks. i develop the software that has lan data and graphical UI. now i want to move generated binary file to target linux. just moving the single file is enough or other files and configuration on target linux is required?
I haven't used RTAI, so I can't confirm what's required there.

Although your package is typcally made up of programs, libraries and some config; it's typical to use a package manager to treat the whole thing as a single entity. No one wants to start copying individual programs and files around. The actual package manager you choose, depends on the requirements of your target platform.
thank you very much for the help. i think i'm going to a lot of effort...
I do something similar with real-time processing on RTAI linux and VXWORKS and a UDP interface with my windows host. Of course you need a non-windows target OS to meet real-time requirements.

I develop on Windows (visual studio). I compile and debug for windows in visual studio. When I am ready to try it out on my target platform, I open a kubuntu virtual machine and mount my development folder with cifs or hgfs. I run a make command which compiles all binaries and creates an installation ISO.

I write the ISO to a USB stick and reinstall the entire OS with the new application on the target.

I don't recommend real-time developing on RTAI linux. This is because I don't recommend installing a desktop environment on a real-time target. Keep real-time targets as simple as possible. It should only load the kernel and your application... that's it. That's the only way to absolutely guarantee performance. Without a desktop environment (Gnome/KDE) you probably don't want to develop purely in the terminal.

If I need to tune/configure anything on the target machine, I use WinSCP to modify the files. Anything modified gets copied back to my environment where I can commit it to SVN and it will be installed on the next image.

Bottom line
There is no need to change your development enviornment. Use cross-compile tools and work with what you are familiar on. Don't develop on RTAI linux, and if you do, don't use the same machine as your target.
Last edited on
Topic archived. No new replies allowed.