As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am asking this question is because I need to modify an open source software and I completely have no idea on how to start the project.
Here is more details.
I usually works in Linux and use GNU compiler (g++, gfortran, etc) and Intel compiler (icc and ifort). I can write fortran and c/c++ programs. So far, the project that I wrote is less than 10 files (with vim, no IDE so far). I usually compile them separately and put them together as a single executable file.
Now I need to modify an open source software (A software for scientific calculation. No GUI. And it reads an input file with all calculation parameters.). The source of it contains hundreds of files which is too much for me. It does come with a configure script and some makefiles. And it use both c and fortran codes (I suspect the c code calls some fortran subroutines.). But I haven't try to use fortran subroutines in c/c++.
I need to understand it, make a small modification and add some functions or subroutines in the software as new features.
Could you tell me where to start? Is there an IDE which can “import” the software as a project? Or some handy tool to draw the connections between different files? (It is horrible to read the configure script and makefile first, then start to work.)
Thanks.
You could try speaking to the maintainer of the project, or asking for guidance on their discussion forum if one exists. Don't expect them to just tell you want to edit, however. You're more likely to get help if you've at least tried to understand what the source code is doing and how it hangs together, particularly since, in my opinion at least, you really ought to understand what it currently does before you change it.
Having said that, if the change you need to make would be useful to other people, the maintainers may accept your proposed changes as a feature request.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Recently I learned Lua, we need it to co-work with existed C code(HTTP server).
From Lua books, we know that there maybe to way to make them co-working:
From Lua, you can wrap C code in share library(xxx.so) that Lua use require to import them.
From C, you can use existed Lua API to operate on lua_state, it's some trick but it works well.
I adopt both of them and everything seems great, by using Lua we can save a lot of time to implement our business logic. But I'm quite nervous about current architecture, although there was no serious problem in it, I always worried about it, if there was some thing happened, for example, serious performance bottleneck, memory related and so on.
Is anyone got rich experience in this, please give some some advice. Thanks.
Lua is designed to work well with both C and C++. The C API is meant for that.
You don't need to create and use shared libraries to extend Lua. It is the easiest way to extend the standard command line interpreter but it should be easy (if not easier) to link static C libraries for Lua in your own application.
If you want to see some examples of C libraries for Lua, see mine. There are many others.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
What is a programming language to make program with a GUI. I know there is a way to make a GUI using C in Windows, but I want to program with Linux and make my programs compatible with other OS's as well. Any recommendations?
If all you want to do is make a GUI, why don't you just use HTML?
Alternatively, if you really want it to be a more native app, maybe consider Java.
I know there is a way to make a gui with C in windows but I want to program with Linux
Who told you that you can't write a GUI app in C on Linux...
Also, for whipping up quick GUIs, there's wxPython.
You cannot create a GUI using the standard C library. You can make one with an external library though.
With OpenCV, it is possible to make a GUI, and there is a large community behind the project. You can find lots of code examples and tutorials on their website. In addition, you can use OpenCV for lots of other computer vision related things.
You could also use GTK+ to write a GUI for your program. It is very simple, and easy to use for beginners. It's more focused on graphics though, and if you want another functionality required by an external library, you might not be able to use GTK+.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I will start writing a JIT/interpreter for a small language, and would like to use some of the free JIT tools/libraries available today. What are my options (I only know of libjit, LLVM and GNU lightning), and which would be the easier to use (but not too slow)?
The requiremens would be:
Compiling time is not important
Execution time is important, but so long as using the JIT compiler isn't too hard
Ease of use is important
No garbage collection necessary.
Actually, no run-time environment necessary (I'd really just want the JIT: compile into a memory region, then take the pointer and start executing the generated code)
Development will be done in plain standard C (no C++, no platform-specific features), with pthreads.
Plain standard C with good execution time? you must be looking for LuaJIT(actually dynasm which is the backend, but thats still part of LuaJIT), which is a tracing JIT compiler (where as most of those mentioned are static). It does have garbage collection, but it can easy be taken out or modified (there is a planned overhaul of it soonish), and it has a native FFI, so it can easily do external binding (from a C level, so you don't always have to get into the nitty gritty).
Best part, its totally public domain code, and the code is the documentation (which is nice as its well structured).
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am on the look out for a good software for browsing kernel level code written in C. I am currently using source navigator. Are there any better suggestions?
EDIT: I work on systems with both Windows and Linux (Ubuntu), so it should run on at least one of them, but Linux software is preferable.
This might not be what you're shooting for; it's less interactive than a dedicated tool, but I've found LXR to be very useful for providing a web interface front-end for browsing large source repositories. In each file, every symbol is linked to its original definition, so it's easy to dial down to exactly what you're looking for.
It was originally designed for indexing the Linux kernel source, and still does so here, (though I must say I'm not jazzed about the new AJAX interface...)
It can be run on any code base, though; not limited to the Linux kernel. And the web interface makes it easy to access from anywhere and from any system.
Visual Slick Edit does the trick for me.
Good tagging for big code bases, building, macros,light ui and support for many languages.
Unfortunately costs some $.
The reason I mostly wanted to switch from source navigator was that the project had closed down and the new project (Source navigator NG)seemed to be defunct(because the website etc. were down). But today, I checked and they had releases upto 2010. So they are probably still up and running.
Check it out, it has a good GUI and searching is easier than in cscope.
I use doxygen when I receive a big lump of code that I need to do a quick review on. You can use a special syntax in your source to make the doxygen output nice, but it does a decent job without.
netbeans works perfect for me
ctrl+click on any symbol will take you to the definition
then alt+left
very convenient for source code navigation
it's also cross platform
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I've got a C++ app that ships on Windows and OSX. It communicates with our backend using TCP (encrypted with OpenSSL, natch). I'd like to throw up some speed bumps for folks who are trying to reverse engineer the protocol and/or disassemble the executable.
Skype does an excellent job of this, which is why you won't find a lot of apps that speak skype. Here is a really good read about what it does: http://www.secdev.org/conf/skype_BHEU06.handout.pdf
I'd like some ideas about how to accomplish similar stuff our app. Are there commercial products that make code harder to statically analyze? What is the best way to invest my time to accomplish the goals I've listed?
Thanks,
Some simple suggestions for OSX:
Prevent gdb from attaching to your program
http://www.steike.com/code/debugging-itunes-with-gdb/
(this can be worked around, but will keep some casual explorers away)
Have at least some of the code in your product stored outside the text segment of the executable, for example in data, or in an external (encrypted) shared library.
Minimally protect any sensitive string data by not storing it in plain text. Run "strings" against your executable, and if you see anything that might be helpful to someone trying to figure out the protocol, encrypt it.
GCC's -fomit-frame-pointer option can make debugging more painful (but can interact badly with C++ exceptions).
If I remember correctly Skype is using something similar (maybe they pay them to implement it in Skype, who knows) to "Code Guards" described in:
https://www.cerias.purdue.edu/tools_and_resources/bibtex_archive/archive/2001-49.pdf