Recommend Linux IDE for general Linux C & Kernel development [closed] - linux

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Can anyone recommend a good IDE for general C coding and kernel development under Linux?
A few conditions would be:
NOT ECLIPSE - or any other heavy-weight Java based monstrosity that has esoteric compatibility issues, and runs like a pig.
Must work and play nice with Cygwin - or other ways of running it remotely (through X, or - I'm open to alternatives).

KDevelop is a wonderful IDE and it actually supports some Kernel-type of projects such as writing device drivers, etc.

Isn't vim + ctags + gdb enough?

In short no.
I used pida for a while, which was cool, but a bit buggy. Looks like they've had another release since then so might be worth a try. It's python focused but perfectly usable for other things. http://pida.co.uk
I use gvim, with the git plugin http://github.com/motemen/git-vim
And just make tags, gitk, gitg, git grep.

Code::Blocks
I use it for both app dev and kernel dev.
Now I was scared by Eclipse as well and for the same reasons.
But it ended up being the only IDE I found so far that is able to handle the set of Linux kernel symbols for the WHOLE kernel source tree (functions, defines, structures, everything). It is able to parse the whole kernel sources in a decent time, some tens of minutes (one time operation for each kernel tree). So I at least use it as a very smart symbol browser.
What does this bring you? Full instant code navigation:
When studying kernel and developing kernel modules, this happens to be a HUGE time saver:
To follow a function call, move the mouse cursor to the (called) function name, press Ctrl, click on the symbol, bingo, it loads the source module and instantly gets you to the function source code. Press the back arrow, you're back at the call place.
You can follow whole call chains / stacks / programming trees this way, and just naturally following code paths.
Link from a var usage to a var definition, then follow up to the struct definitions and back...
And finally, I found that Eclipse was actually perfectly integrated in Linux:
It runs just like a native app and is not sluggish like I expected it to be. I didn't feel its large size. Now to get it working and achieve that, I had to install the latest / greatest Sun Java and make that the default java machine -- the open source Java package didn't cut it.
Just my 10c...

Well, NetBeans is a java monstrosity, but it's bearable, even on my netbook. I like the vi/vim plugin, and the undockable windows so that you can have a nice big editor window with the other stuff off in a separate window. Yes, it does a lot more than just Java, even C.
screenshots on my site

vim + gedit + acme, combination.
vim is good for console environment.
gedit with plugins is good for multiple files open.
acme just another way to open multiple files.

Related

What does it mean to 'know' linux, as opposed to other operating systems? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 8 years ago.
Improve this question
I see that this question may appear broad, but it's actually very specific, and should have a specific answer.
I've come across many job postings in the past few years that list 'linux' as a required skill. In my experience as a developer, I've mostly worked out of a Windows operating system, and I'm aware that some of the C++ code I've used is specific to the Windows OS, and I'd assume that many of the shell commands are also specific to Windows.
So what I wonder is: when someone says you should 'know' Linux, what exactly are they referring to, or, in other words, what things specifically should I know about Linux to be able to call it a skill?
You should know
the shell language (and the relevant commands like grep, sed, ...)
the most popular package-managers/package-formats and how to use them (deb, rpm, ...)
how and where to configure basic system-wide things (e.g. grub, fstab, ...)
the basic architecture of linux systems (boot stuff, init system, kernel, userland)
common concepts (e.g. POSIX, FHS)
toolchain things (as Hi-Angel already outlined: gcc, clang, gdb and other tools)
I advise against installing things like gentoo for getting into linux. That is quite unrelated and you'll have to deal with a lot of distribution-specific pitfalls (I am a gentoo dev).
Use something which is commonly used, like OpenSUSE or Debian to learn things.
Linux is part of the *NIX family of Operating Systems. If Linux is a job requiement, then it probably means that your employer uses *NIX OS's and therefore want you to be familiar with how Linux and similiar operating systems work.
The most important thing you need to know is how NOT to use a gui, but rather a text-based console.
That does mean you ought to know at least basic GNU/Linux commands, and understand at least abstractly how are things work there (i.e. what is kernel, what is X server/client, what is window manager, what is file rights, users, groups). Actually it is easy to learn, just try to install some linux distro from a source code. E.g. Gentoo. It would teach you how things are works there.
Also, since you are looking for a developer job, you ought to have a little
coding experience in GNU/Linux. As I recall what could wonder you as you came from Windows®, it is the fork() function, and a missing need to tackle with wchars — because there is everything in UTF8. Also in GNU/Linux you may find something like offline MSDN — so called manual. If you install a few developer man packages, you may find there an offline description for many system and C-specific functions.
A few more tips: α) The /proc/ filesystem. You may find there directories which are actually PIDs of running processes. You may find there many useful info. E.g. the /proc/somePID/exe is a symbolic link to the executable file of the running process. β) Almost every GNU/Linux distro contain many tools which would be useful for programming. gcc (compiler), nm (list symbols from object files), md5sum, hexdump, gdb (debugger), objdump. γ) Everything is a file. That does mean that e.g. if you wanted to create an image of a usbstick, you don't even need a specilized tools, you may just find it's file in the /dev/ directory, and with dd utility, which just copying a file content, write it to a file. δ) Everything you installed you can next launch from a terminal, that is, you don't need to seek for executable. An executable file usually installed somewhere in /usr/bin/, but anyway, it would always be in your $PATH variable.

How to create Flash animations / movies on Linux? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
This is more of an assignment work. I'm trying to help a friend debugging his Flash animation. Now, when I'm at his place and at his MacBook, he's using Adobe Flash to create his animation, with those timelines, the AS3 editor, etc.
Now, I want to help him while I'm at home, but I don't have a Windows or Mac computer, and I don't have a Flash license (he's got his from the school he's going to).
I know about osflash.org, but can I work the same way as he does in Flash? I need those timelines, and obviously I need to compile and preview the .swf files.
I should explain, I've never worked with Flash before, and the IDE is quite weird to me. The only way I help him, is by providing general programming skills (since AS3 is just another OO language). I was thinking of installing a cracked Flash version in a Windows VM, but that's not how I'd like to work.
Is there a better solution to this?
He's doing his work in AS3, as I mentioned.
Since you are not much familiar with the flash IDE you should be not at problem. Since the only problem with linux & flash developers is lack of decent IDE.
AS3 programs can be compiled with the flex SDK. So you simply need to download the SDK for your linux ditribution. However do note that there are no timelines in case when you develop applications with code. Instead you work with Timer events.
Flash IDE actually hides the Timer implementation in a easy usable (neat) way to provide anyone to create an application quickly.
FLA is a proprietary format for Flash CS and earlier files. No, you cannot use them with Flex compiler, because the later is an OOS software. But you can tell your friend to avoid using them. It is in fact very common to use them only to generate graphic assets, but not the code. The typical workflow is to compile SWC or SWF to use as a library and to write the code in another editor.
Anyways, some practical things:
Developing AS3 proper, you can use Intellij IDEA (some people even like it and use on other OS then Linux, to be honest, I'm not a big fan of it, but it is of the same quality as the most industry-standard level IDEs)
Your another option (which I'm using) Some good soul "ported" Flash Builder for Linux (Flash Builder is originally an Eclipse plugin developed by Adobe). It's story on Linux is fogged by a mire of inconsequential decisions. Once there was a trial version, but Adobe never released it for Linux. The trial expired, then Adobe granted continuation for the trial version. Later, they seemed to abandon the product entirely. I'm not sure of its current status, but you can find it here: https://code.google.com/p/fb4linux/
Your another option, absolutely legal, but problematic: FlashDevelop, it runs considerably well in virtualization and the devs made an effort to ensure the best they can that the virtualized version runs fine. It also runs (to an extend...) under Wine. I tried the later, but I tried it a lot time ago, it was far from being perfect, but it was workable. Here's the thread at FD forum on this: http://flashdevelop.org/community/viewtopic.php?f=9&t=7621
FDT (from Powerflashers, a commercial IDE based on Eclipse) is said to run on Linux - never tried.
What I also used: Emacs with actionscrip-mode - it is barely a syntax highlighter. While using it I added some functions to run the compiler and debugger, but they are too crappy to share them :) seriously. So I won't.
More options:
Haxe, is another language that compiles to SWF. Less well-known, but considerably more advanced and more modern language. Besides compiling to Flash does a whole bunch of other things. I've seen it used inside MonoDevelop http://haxe.org/com/ide/monodevelop (haven't used myself). Similarly, it should be possible to use it inside FDT.
Haxe mode for Emacs (I'm currently trying to improve it, but it's not there yet), hopefully, in a couple of month it will be. Here's what I've gotten for now: https://code.google.com/p/haxe-mode/
Graphics:
It seems unlikely that you can find an editor matched to Flash CS in terms of editing vector graphics for Flash, but MXMLC (Flex compiler) can fairly well compile SVG. You can thus use Inkscape to produce some non-animated graphics... but YMMV

Any alternatives to Eclipse? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm a long-term Linux developer, and I've been using Eclipse to do all my coding for years. It's got decent syntax highlighting for a range of languages, good project management, top-notch integrated VCS support, and its Java support is superb.
Unfortunately it's also huge, rather clunky, and has a number of bad habits ranging from files disappearing irrevocably if you accidentally undo in the project view after creating a file, to mysterious lockups where it will sit and think at 100% CPU for a minute, to an extremely clumsy package manager that seems to become more and more fragile the more stuff you install with it. So I'm looking for suggestions to an alternative to Eclipse that I can try.
There are, however, some provisos.
There are two main styles of IDE. There's the Eclipse style, where a project is a directory; moving files in the project moves the files in the directory, so the project view can be treated as a file manager. And then there's the Visual Studio style, where the project is an abstract thing that does not necessarily match the layout on disk, and a project can contain files from multiple directories and moving files in the project doesn't touch the disk. This latter style I cannot stand, as it simply doesn't match the way I work. Unfortunately most Linux IDEs I've found work like Visual Studio. e.g. qtcreator, netbeans, monodevelop, etc.
I must be able to create a raw, unmanaged project, where the IDE doesn't try to build stuff, debug stuff, or touch the files in any way other than just editing them and managing them. This is because most of my stuff tends to get built from the command line. For example, Code::Blocks, which otherwise looks excellent, insists on all projects having a managed build system with build configurations etc, and won't take no for an answer, even if said build system is totally irrelevant to what I want to do. Integrated build systems are all very well but if I can't just point the IDE at a directory full of files and edit them, I'm afraid it's useless to me.
The languages I work in are C, C++, Java, Lua, shell script, Vala, and a myriad of other things, so something with decently robust syntax highlighting would be nice.
I realise that I'm being quite picky, but IDEs are a very personal thing, and, well, that's how I work. I don't dislike Eclipse enough to warrant changing my workflow, but I would like to know if there's something better out there that I can use with the same workflow...
I'm not really a very experienced programmer, I only have about 3 years of experience, but during those three years I have become completely disappointed with every IDE that I used.
I tried Visual Studio, Eclipse, NetBeans, IntelliJ IDEA (that was the most horrible of them, probably), Qt Creator (this one was the nicest, for Qt projects). All of them were too slow, clunky, too "intrusive", had a lot of features I didn't even need and using them was a real pain. So here is what I did.
I uninstalled all those IDE's, installed the good old gvim text editor, downloaded a nice color scheme for it, installed a good font for programmers (terminus), installed a few nice vim plugins, learned the VIM commands, learned how to use my tools (GNU make, g++, cvs, git etc.) and lived happily ever after.
The advantage of Vim is that it's lightweight, does not hog up your system's resources, does not tell you what to do, yet it is powerful enough to be one of the best text editors out there.
However, if you find Vim hard to grok, I suggest that you try Geany, a lightweight text editor for programmers. Also, I have recetly checked out Code::Blocks and it seems close enough to be good. It's not good for Java development, though, but for C++ it's decent. So, you know, pick your poison :)
How about JEdit?
I highly recommend Intellij Idea. As of about a year ago they've got a free Community Edition.
Since you are using Linux why not use xemacs (http://www.xemacs.org/)
To get an idea how to set it up for various languages you can look at this:
http://www.xemacs.org/Documentation/packages/html/prog-modes.html
Then for Java, you can look at http://jdee.sourceforge.net/
Emacs is very flexible, so you can get it to work as you desire, but, it will require more effort on your part that using a standard IDE, such as Eclipse.
When I don't want to wait for Eclipse to load I just use gedit - it's fast and has syntax highlighting.
You can open the sidebar to jump between open files or use the file browser and the bottom panel has a terminal to make in. If you use the External Tools Manager you can add custom scripts to be run by any shortcut key combination.

Recommended IDE for R under linux [duplicate]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
What good IDEs are there for R in Linux?
I've tried Rcmdr and Eclipse, but neither seems to have the same usability as Tinn-R in Windows. Are there any other options?
A newcomer to the scene, which IMO looks very promising - and downright baller - relative to other existing IDEs like Rattle and JGR, is RStudio. It's free software, is cross-platform, looks very polished, and even has features like automatic refactoring.
Update 2012-04-12: I've been running it for a bit on our DB server, and I love that it's a web app that saves your sessions, resume-able from anywhere else. Plotting requires not only no X tunneling or png-writing but is easier to use than out-of-the-box R. Extremely easy to get up and running, and it comes with packages for Debian/Ubuntu (which I use).
The company/development is moving pretty fast, aiming to be the de facto standard IDE for all R users. If I'm gushing, it's probably because I was pleasantly surprised by the quality of the IDE after a long time of using sub-par IDEs, not just for R but for plenty of other languages. So this was a bit out of the blue. I still need more time to really dig into it but I like what I'm seeing so far.
JGR isn't bad:
http://rforge.net/JGR/
Most people I know rave about Emacs + ESS:
http://ess.r-project.org/
But it's not quite the same thing as Tinn-R.
Along different lines ...
If you're looking at a high level functions for data mining, then Rattle is an option:
http://rattle.togaware.com/
and another high level app for interactive plotting:
http://code.google.com/p/playwith/
I have found that the Emacs-ESS combination is well worth the learning curve. I enjoy being able to:
have code and R console side by side
send the current line, paragraph, file, or function to the R console without touching the mouse
easily interact with R sessions on remote computers
enjoy all the editing abilities of Emacs
Here's the website for the project:
http://ess.r-project.org/
Here's a helpful document about ESS in particular:
http://www.demog.berkeley.edu/Refs/ess.pdf
Brand new IDE out there (as of Feb 2011) is http://www.rstudio.org/. Seems very promising from what I've seen so far.
Although Eclipse was mentioned by the OP, I do not know if he ment it with the StatET plugin.
Eclipse with StatET is a really great IDE besides e.g. EmacsSpeaksStatistics (ESS), but as in other environments the user have to learn it's the basic usage first. The only handicap of this IDE could be the relatively high resources requirements as based on Java, but this makes the program OS independent of course.
Why I really would suggest to take the time to learn use StatET efficiently (cauction: very subjective list!):
be able to run your code really fast and easily with comfigurable shortcuts (by Ctrl+r by default),
thanks to the script editor and running environment is heavily integrated, debuging and reviewing your code cannot be easier,
configurabled environments by default (e.g.: R scripts),
you may define templates for frequent commands and those's environment (e.g.: loop, if conditions etc),
highly customizable syntax highlight,
TeXlipse integrated to view and edit tex code with ease (LaTeX support for Eclipse),
Roxygen support for literate programming (very handy at package development to automatically generate Rd files (manuals) from inline comments),
easily extendable with othet Eclipse plugins (e.g.: spell checking, (SQL) database management, image viewer, running external programs like Sweave).
A nice guide to read is A Guide to Eclipse and the R plug-in StatET by Longhow Lam.
Gedit + RGedit plugin + Snippets plugin
You've suggested eclipse; there is a plugin called StatEt which work quite well (even Sweave is supported!).
There is a KDE 4 based IDE called RKward. It's nice because of:
Workspace Browser
Integrating the R console
data.frames editor
Syntax colored editor
GUI frontend for installing CRAN packages
For my case, I would recommend RKward for linux, it is a KDE. I've been using RStudio in Windows, but when I switched to Ubuntu, I find RKward easy to use, and has a good interface.
You can create a data frame without coding it with data.frame() function.
If you are used to Eclipse, StatET (mentioned by mbq) is probably the right choice for you.
That being said I have a more exotic choice to offer that you might want to consider, if you like auto suggestion and pure syntax highlighting is not enough for you. At least for me auto completion of R-Code did not work with StatET.
Now I use Komodo Edit with Sciviews-K and R64. Sending Code from editor to R works really well and the editor offers auto-completion for R-Code which is really nice – in particular if you are new to R. I work on a Mac, but it should be easy to setup for Linux too.
I think it has lost some popularity because it wasn't to stable in the past, but at I feel it's much better now and it hardly crashes in my setup. So you might wanna give it a chance too.
EDIT: If you work on Mac Textmate with the corresponding R bundle might be interesting, too. Recently I am about to switch to Textmate. If you don't care about the $45 for textmate, it's probably the most stable choice I tested so far. But it's only available on a Mac. But hey I am really amazed by this editor (and as you can see I like testing setups ;).
EDIT: I realize this thread is still being read by someone, so I definitely need to mention RStudio. It came out of nowhere and quickly became the choice of a lot of people. And it's well deserved. It still has some bugs (like not being able to stop RSessions) but it has tremendous auto-complete with context help. But at least on my setup (Mac) it's more stable than StatET / Eclipse. Sweave and ROxygen is not really supported yet, but the developers are very active. Definitely worth trying.
EDIT II: Because it's fun to track this here's another edit. RStudio continues to win more and more users. The combination of RStudio, Roxygen2 and particularly knitr integration has likely been the largest contribution to this development. While Rstudio was rather used by applied users and in teaching and has improved to dramatically that there's isn't many situations in which another IDE / editor is a better choice. Being maried to ESS seems like to only valid reason left to not use it. Also the documentation of its ecosystem is just great. The latest: Package development by Hadley http://r-pkgs.had.co.nz/description.html and his advanced programming http://adv-r.had.co.nz/
I strongly recommend learning emacs+ess, but for a more modern-looking interface you can try RKward: http://sourceforge.net/apps/mediawiki/rkward/index.php?title=Main_Page.
I use Geany in combination with R. Geany provides a terminal in which one can start an R session and shortcuts an be defined in order to send highlighted text to the terminal.
www.geany.org
RGedit, great tool if you're keen on GNOME default text editor. Lacks autocompletion in script mode, though... but you can define snippets in a separate plugin (Snippets)... You can send code directly to R session running in the terminal window, tabbed multiple R sesions, there are several GUI templates for common data analysis (t-test, correlation), long story short, take a look at:
http://sourceforge.net/projects/rgedit/
Few months ago (when I gave my blogging skills a try), I wrote a review for RGedit, here's a link (and a little bit of self-advertising):
http://psy-stat.com/?p=12
EDIT:
Oh, and you can use Geany and set it up so you can send code chunks to R session... I've never done it, but I know it's manageable!
EDIT #2:
here's a helpful link: http://sgsong.blogspot.com/2010/08/integrating-r-with-geany.html
This might be what you're looking for. It integrated Komodo and the SciViews package. I found it a bit too fiddley (I prefer vi) but if you're looking for a full blown IDE/editor for R in Linux it's pretty close to Tinn-R for Windows and it's written by the same guys!
Link:
http://www.sciviews.org/SciViews-K/index.html
Rattle: http://rattle.togaware.com/
Emacs with ESS. Probably not as polished as Eclipse, but I do like it.
Personnaly, I use gedit and my console. It works great :)

Would dropping X altogether hurt? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I live in the linux terminal all the time under my slackware GNU/linux system (an EeePC). By default, GNU Emacs won't start if It can't find several Xorg libraries. Assuming I will never use X software at all, would it make sense for me to drop all this Xorg stuff and compile emacs again ?
Are you aware of anything that could get me into troubles or making GNU Emacs not working at all ? Are there any advantage for me to keep all these dependencies ?
I am asking since as said, my main box is an eeepc with little storage and I am dangerously hitting the limits ;-)
At the very least, what would be smallest and minimal Xorg libraries one should keep to launch xterm (with a deported display) ?
Regards
You should be fine building an Emacs without X as long as you're happy having it locked up inside a terminal.
On several (remote) machines I work on, I've always installed/built Emacs without X-Windows for similar reasons.
Emacs is pretty easy to build, though you might have to spend some time getting the build options right. The included INSTALL file is pretty good.
Since it's mainly a text-based tool, Emacs works well in a console. (Who uses the silly toobar anyway?!) And the menu bar's main advantages are for discovering the features of newly installed libraries and for printing. But you can even access that from a tty with M-x tmm-menubar.
Having said that, you do have to reckon with the loss of a few key combinations which some Emacs packages make default use of. For example, one of the great reasons to use Emacs these days is org-mode, which makes heavy use of modifier keys + arrows to manipulate outline structures. In a Linux console, some of these are take for other purposes, so you have to live with a few workarounds. I've seen other convenience packages (for moving around visible windows, for example), that also use those keys.
Good luck.
As long as you're happy living without the mouse, there is no disadvantage to using Emacs as a terminal-only editor. And I see no advantage to having it loaded if you're not using it.
If you were using a more sophisticated Linux distribution, such as Debian, you could install something like emacs23-nox and get Emacs compiled without linking to any X library. You might see if Slackware provides a similar package. Or if the alien tool can convert the Debian package. Or as a last resort, change distros.
If Slackware doesn't provide a suitable package, you certainly have grounds for requesting one.
(Having said all that, I probably would find that the best use of my time is just to live with whatever version of Emacs my distro provides.)
Well... I'm usually using vim... ;-)
I usually install Debian's vim-nox package which is simply vim compiled with everything except GUI; I do that even on my workstations, where I do have full GNOME environment. I simply like the way vim works in the same terminal window I do other things.
When I tried emacs some time ago, the first thing I changed was to disable its GUI; I don't actually know how much did I lose, because I didn't know emacs very well--still I found no essential functionality removed.
You should try. You can always go back to the standard compilation.

Resources