C is a well known Programming language Created by Dennis Ritchie between 1969 and 1973 atย Bell Labs, since then it has become one of the most wid...
For further actions, you may consider blocking this person and/or reporting abuse
Is it possible to make this for an unrooted device?
Yes ofcourse. But still Root gives you more flexibility
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.
Maybe it had Runtime Errors
I don't understand
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
I tried even the simplest code as hello world. It's running perfectly with Dcoder app.
But not compiling with Clang?
Exactly
What error does it give?
No error but doesn't compile
there must be something to identify the problem, without knowing the bug I can't help you to debug it.
Here is a pasted text from Termux
$ gcc -o mult.c
clang-8: error: no input files
$ clang -o mult.c
clang-8: error:
Ah, seems your source code is not in Termux home path. You should copy your
mult.c
file to Termux home directoryHow can I make this?
Copy - paste
$ 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
$
And this is in the path, right?
Ah now I understand.
Just Remove
-o
and it should work fine.Do this
clang condition.c
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
C is a compiled language and It seems
simple.c
is compiled.Just Run the binary
simple
with$ ./simple
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?
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 intoa.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>
@koouty , seems like you're new to C , I would recommend watching some Beginners' Tutorial and Reading some tutorials available on internet.
Many many thanks.
If any need any further help you can just DM me
๐
I understand, but it wouldn't be a problem if you want to do some quick prototyping or experiment some little bit.
I wrote this article because a few years ago, I didn't have a computer just an android phone. I started learning to programme using the apps I mentioned above.
I hope above apps will be useful for people who don't have access to computers or want to do some quick prototyping.
Termux is amazing - I went on a business trip a while back and we got production error emails on a snowy back road in the middle of nowhere. I was able to ssh into the server, grep the log for the error, and push a hotfix with vim over mobile data. The team stopped making fun of me for programming on my phone after that.
I used TerminalIDE on my older rooted Galaxy S3, when Termux wasn't avail for that version (too lazy to re-root). I downloaded CPPDroid, stole the compiler, and modified it to work in the terminal so I could work on my C game at the time using vim. I spent a lot of time commuting to school, so I felt it was a better use of the time.
I still find it amazing that my new phone is more powerful than my old netbook I used to use in school, and invaluable to have a pocket *nix device with me at all times. I even set up a headless driver for ssh web dev on the fly. You get used to the tiny keyboard in time, most people just expect typos in my texts now...
Yeah, you need tiny fingers, but on a Pixel XL it's not the worst
Your experience was great. I remember last year I compiled the whole metasploit framework for Android (thanks to Termux) and it worked perfectly on multiple android devices. ๐
Termux is awesome indeed and we here at Andronix love it. Andronix is an open-source, completely ad-free app that lets you install full-fledged Linux distributions on your non-rooted Android device. We utilize the power of Termux ๐.
Here's an article -
Installing Linux on your Android Device
Prakhar Shukla ใป Nov 29 '19 ใป 4 min read
Will you please share how you had done that?
Stealing the compiler, or ssh'ing over data?
Either way - same answer. These days I use the Termux app (IIRC not available on iPhone), within which you can install openssh and the gcc toolchain which will allow you to ssh and build c programs just as you would on a nix terminal on any desktop.
When I stole the compiler, I had a rooted phone, installed the C4droid app, then went into it's package folder and looked for the binary and linked lib files, copied those into my home folder, made a small wrapper script that added all the necessary compiler flags, and built the c apps from the TerminalIDE terminal.
It's significantly more work (plus trial and error) doing it that way, and requires rooting your phone. Now, with Termux, it's a simple
apt-get install -y build-essentials make gcc ...
andapt-get install -y openssh-{client,server}
.EDIT: found the old script - left the comments for myself
Hey Palash, that was a great list indeed. But how about running a dedicated IDE for C on your non-rooted Android device? Andronix allows you to do just that in a few clicks.
Here's an article -
Installing Linux on your Android Device
Prakhar Shukla ใป Nov 29 ใป 4 min read
Hey Palash, Firstly Kudos to you for making this great app.. I have a project wherein I need to integerate C compile with my android app within Android studio.. is it possible? I would be grateful could you suggest some hints for the same..
$ apt install clang
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package clang is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'clang' has no installation candidate
$
Hey so I haven't programmed in a very long time last time I did was programming in C using windows api. Would I be able to write my C code using windows api and it still run on Android? Sorry if its a stupid question
If not how would I create the interface? Sorry im so old lol if you can point me in the right direction that would be great.
Thank you so much. This is very helpful to me
I tried to install the package of clang in termux but this message showed to me: "unable to locate package clang"
How can i fix this ?