Ridzhi, и да, если ты компилируешь при помощи gcc/clang/практически любой другой компилятор то он сам делает файл исполняемым. Кстати, cc лучше поменять на gcc или clang в зависимости от предпочтений. Я рекомендую пользоваться clang-ом, поскольку он выдаёт более подробные сообщения об ошибках. Для сборки программы лучше не bash использовать, а систему сборки, в простейшем случае написать самому make файл, чуть посложнее, но более правильно использовать autotools. Ещё правильнее использовать cmake.