DEV Community

Discussion on: How To Run C Programs on Android

Collapse
 
koouty profile image
Kouty

Is it possible to make this for an unrooted device?

Collapse
 
bauripalash profile image
Palash Bauri 👻

Yes ofcourse. But still Root gives you more flexibility

Collapse
 
koouty profile image
Kouty

There is a problem for me. I am storing my files on sdcard because the device is unrooted. When I type in Termux 'clang filename.c' or 'clang filename.c -o filename', and enter, I have as result '$', no more. But I noticed that if there is an error in code, I have an error message.

It seems strange but one time the code were compiled.
I don't understand what is the problem.

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

Maybe it had Runtime Errors

Thread Thread
 
koouty profile image
Kouty

I don't understand

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

Can you share the source code of your program.
Runtime error are such type of error which can't be detected by compilers, and such error can be noticed while running the program

Thread Thread
 
koouty profile image
Kouty

I tried even the simplest code as hello world. It's running perfectly with Dcoder app.

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

But not compiling with Clang?

Thread Thread
 
koouty profile image
Kouty

Exactly

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

What error does it give?

Thread Thread
 
koouty profile image
Kouty

No error but doesn't compile

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

there must be something to identify the problem, without knowing the bug I can't help you to debug it.

Thread Thread
 
koouty profile image
Kouty

Here is a pasted text from Termux
$ gcc -o mult.c
clang-8: error: no input files
$ clang -o mult.c
clang-8: error:

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

Ah, seems your source code is not in Termux home path. You should copy your mult.c file to Termux home directory

Thread Thread
 
koouty profile image
Kouty

How can I make this?

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

Copy - paste

Thread Thread
 
koouty profile image
Kouty

$ clang -o condition.c
clang-8: error: no input files
$ cd
$ ls
Filename eaain herbe.rb
conditiond.c eaain.c termux-sudo
downloads essain.c
$ pwd
/data/data/com.termux/files/home
$

Thread Thread
 
koouty profile image
Kouty

And this is in the path, right?

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

Ah now I understand.
Just Remove -o and it should work fine.
Do this clang condition.c

Thread Thread
 
koouty profile image
Kouty

I reinstalled Termux, clang and nano to write files. I wrote and saved a file in rb and a file in C. Note that I wrote in the Termux path and here is the result.I can run easily Ruby files but for c I don't reach out the expected result.

Setting up ruby (2.6.5) ...
$ nano simple.rb
$ ruby simple.rb
hello
$ nano simple.c
$ nano simple.c
$ clang nano.c
clang-8: error: no such file or directory: 'nano.c'
clang-8: error: no input files
$ clang simple.c
$ clang simple.c -o simple
$ ls
a.out downloads simple simple.c simple.rb storage
$ clang simple.c
$ clang -o simple.c
clang-8: error: no input files

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

C is a compiled language and It seems simple.c is compiled.
Just Run the binary simple with $ ./simple

Thread Thread
 
koouty profile image
Kouty

It works! So, if I understand, after the clang action, A compiled file is created, and I need to open it with prompting it, the same name of file without the ".c" at the end of the name. And to make this I need to type "./filename". Right?

Thread Thread
 
bauripalash profile image
Palash Bauri 👻 • Edited

Partially.
Look, C is a compiled langauge, and Clang is a compiler unlike Python or Ruby which are interpreted language.

When you type the command clang simple.c , clang takes the source code and compiles it into machine code into a.out (a.out is default output name) and to run the program you must execute the binary like this $ ./a.out

And you can name the output binary anything you like by simply passing the -o flag, the syntax is like this :

$clang <SOURCE_CODE> -o <OUTPUT_NAME>

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

@koouty , seems like you're new to C , I would recommend watching some Beginners' Tutorial and Reading some tutorials available on internet.

Thread Thread
 
koouty profile image
Kouty

Many many thanks.

Thread Thread
 
bauripalash profile image
Palash Bauri 👻

If any need any further help you can just DM me

Thread Thread
 
koouty profile image
Kouty

👍