Для запуска как исполняемого файла я бы написал на Си заглушку-вызов *.so, а сам *.so не компилировать ,а оставить в виде объектного файла с предопределённой процедурой входа (обязательной). Вот только непонятно, как эту самую объектную сброку сохранить, т. к. компилятор КП однопроходный. Можно, конечно, Mono использовать, но это уже несколько не то.