Почти всё бесплатно.
далее традиционно
компилим gcc(ну или icc) отлаживаем в gdb(консольный), пишем хоть в vim хоть в emacs вообще пофиг
insight - хорошой front-end для gdb
далее среды разработки в которых работал
vim
codeblocks - хорошая вещь: лёгкий, подсветка синтаксиса, строк с ошибками по результатам сборки, дополнение кода, подсветка, того типов переменно, авто переход к реализации/обявлению, отладка(обёртка над gdb), работает и на винде и на линухе
eclipse - хорошая вещь: тоже что и codeblocks , НО писан на яве поэтому придётся смирится с некоторой заторможенностью на слабеньких машинках, для меня слишком тящеловат, слишком
NetBeans - получше чем эклипс, но также тежеловать, может чуть быстрей.
Как разрабатываю сам:
1. STLport на линуксе и винде, что бы небыло проблем из различий в реализации STL в VC++ и gcc
2. на винде VC++, ну или codeblocks + компилятор от VC++ или gcc
3. на линуксе vim + make или codeblocks + сборка из custom make(т.е. того который я сам на писал, а не codeblocks сгенерил, требования у нас к нему специфичные) или eclipse + сборка из custom make
4. некоторая проблемка в том, что нужно держать актуальными проект VC++ и makefile