Skip to content

Instantly share code, notes, and snippets.

@VirajKanse
Last active February 20, 2026 17:11
Show Gist options
  • Select an option

  • Save VirajKanse/1c0db872cd7685632c02f8826397f190 to your computer and use it in GitHub Desktop.

Select an option

Save VirajKanse/1c0db872cd7685632c02f8826397f190 to your computer and use it in GitHub Desktop.
GCC / Clang C/C++ Compiler On Android Using Termux (Linux Environment)
Install Termux App.
type "apt update"
Then We have to install a text editor to write our code so type "apt install vim" for vim text editor
or u can also use nano text editor for nano type "apt install nano"
Now Clang Installation type "apt install clang" and wait for download completes.
now to create a file simply type vim filename.c or .cpp or nano filename.c or cpp
then u will able to write ur code .
write.....to save ur code simply press esc then type ":wq"
now code is ready to compile
type "clang filename.c -o filename"
If ur code is right then it will be compiled.
Else it will show error.fix it.
To run ur program simply type "./filename".
Tada...Done.
1. apt update
2. apt install vim or nano
3. apt install clang
4. vim/nano filename.
5. clang filename.c -o filename
6. ./filename
@ZenoArrow
Copy link

Are you sure installing clang will give you GCC? Clang is the name of the LLVM C compiler. LLVM is a competitor to GCC.

This is 7yr old post mate, I didn't even shit 7yrs ago, anyway it should run a C code fr ;)

If you want to install GCC on Termux, here's how you can do it...

pkg install tur-repo
pkg install gcc-14 gcc-default-14

That's it. Now you can use GCC to compile code. So instead of "clang filename.c -o filename" you would run "gcc filename.c -o filename".

@sudharshan04052008-code

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <termios.h>
#include <fcntl.h>
#include <time.h>

int kbhit(void) {
struct termios oldt, newt;
int ch;
int oldf;

tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);

ch = getchar();

tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);

if (ch != EOF) {
    ungetc(ch, stdin);
    return 1;
}

return 0;

}

int getch() {
struct termios oldt, newt;
int ch;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}

int width = 20, height = 20;
int x, y, fruitX, fruitY, score;
int tailX[100], tailY[100];
int nTail;
int gameOver;

enum direction {STOP = 0, LEFT, RIGHT, UP, DOWN};
enum direction dir;

void Draw() {
system("clear");

for (int i = 0; i < width + 2; i++) printf("#");
printf("\n");

for (int i = 0; i < height; i++) {
    for (int j = 0; j < width; j++) {
        if (j == 0) printf("#");

        if (i == y && j == x)
            printf("O");
        else if (i == fruitY && j == fruitX)
            printf("F");
        else {
            int printTail = 0;
            for (int k = 0; k < nTail; k++) {
                if (tailX[k] == j && tailY[k] == i) {
                    printf("o");
                    printTail = 1;
                }
            }
            if (!printTail) printf(" ");
        }

        if (j == width - 1) printf("#");
    }
    printf("\n");
}

for (int i = 0; i < width + 2; i++) printf("#");
printf("\nScore: %d\n", score);
printf("Use W A S D to Move | X to Exit\n");

}

void Setup() {
gameOver = 0;
dir = STOP;
x = width / 2;
y = height / 2;
srand(time(0));
fruitX = rand() % width;
fruitY = rand() % height;
score = 0;
}

void Input() {
if (kbhit()) {
switch (getch()) {
case 'a': dir = LEFT; break;
case 'd': dir = RIGHT; break;
case 'w': dir = UP; break;
case 's': dir = DOWN; break;
case 'x': gameOver = 1; break;
}
}
}

void Logic() {
int prevX = tailX[0];
int prevY = tailY[0];
int prev2X, prev2Y;
tailX[0] = x;
tailY[0] = y;

for (int i = 1; i < nTail; i++) {
    prev2X = tailX[i];
    prev2Y = tailY[i];
    tailX[i] = prevX;
    tailY[i] = prevY;
    prevX = prev2X;
    prevY = prev2Y;
}

if (dir == LEFT) x--;
else if (dir == RIGHT) x++;
else if (dir == UP) y--;
else if (dir == DOWN) y++;

if (x >= width) x = 0; else if (x < 0) x = width - 1;
if (y >= height) y = 0; else if (y < 0) y = height - 1;

for (int i = 0; i < nTail; i++)
    if (tailX[i] == x && tailY[i] == y)
        gameOver = 1;

if (x == fruitX && y == fruitY) {
    score += 10;
    fruitX = rand() % width;
    fruitY = rand() % height;
    nTail++;
}

}

int main() {
Setup();
while (!gameOver) {
Draw();
Input();
Logic();
usleep(150000);
}
printf("Game Over! Final Score = %d\n", score);
return 0;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment