Скомпилировать как статический бинарник (можно даже под x86 чтобы работало на 32-битных и 64-битных машинах).
$ echo 'int main(){ printf("Hello, World\n"); }' > xxx.c
$ gcc -static xxx.c -o xxx
xxx.c: In function ‘main’:
xxx.c:1:13: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
int main(){ printf("Hello, World\n"); }
^~~~~~
xxx.c:1:13: warning: incompatible implicit declaration of built-in function ‘printf’
xxx.c:1:13: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
$ ./xxx
Hello, World
$ ls -l xxx
-rwxrwxr-x 1 shurik shurik 844696 авг 13 22:04 xxx
$ ldd ./xxx
не является динамическим исполняемым файлом
Но если используется много всяких библиотек, потребуются их статические версии, что может быть напряжно.