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
I am the lead developer in a small business which is just starting. We are developing a cross platform C library which is intended to run on as wide an array of architectures and operating systems as possible. We have extensive unit tests, so if these tests pass on a new platform then we can say with a fair amount of certainty that the library works reliably on that platform.
Up until now, I have been using Windows 32 bit (which is my development machine), as well as a Linode VPS to make sure the library works under Linux with GCC. Now, I am looking to deploy for other platforms as well (namely more Linux distribution flavors, Mac OS X, and preferably some of the smartphones if at all possible). I want to avoid virtualizing all of these platforms if I can. Are there any services that will allow me to deploy the library on many operating systems and architectures? For all of the platforms I mentioned above, I would like to make both 32 and 64 bit builds available and also for different processors as needed. I would like to be able to build the library for all of these platforms, and run the unit tests. The unit tests are written using Boost.test.
Does anyone have any recommendations? The best way would be if there was some sort of convenient cross compiler for the various platforms that I could install on my Linode VPS (Ubuntu 13.04), but a third party solution to which I should upload the code would also work.
The only cross platform compile (which has a tradition, is free and has the support of a large community) is gcc. Of course, there is Intel Compiler and many others (and even the newer, free clang which seems to be used by llvm, but it is still young). You can find a good list here (for C++, but you can scroll on the page and find for any other language):
http://en.wikipedia.org/wiki/List_of_compilers#C.2B.2B_compilers
If you want to build for Mac from Linux please check this:
http://www.bpiwowar.net/2012/06/cross-compiling-for-os-x-with-distcc-on-linux/
And for windows from Linux:
Manual for cross-compiling a C++ application from Linux to Windows?
Regarding the mobile platforms:
for Android, there is native support for Linux/Windows/Mac so you can use any of these platforms to build apps for it
for Windows Phone: Not so, maybe you manage to run Visual Studio using wine and then you're set, but otherwise there is no way that I know of. You can try CodeWeaver which is the "Wine for money" which seems to support Visual Studio 2008:
http://www.codeweavers.com/compatibility/browse/company/?letter=m;company_sort%5Bcompany_name%5D=ASC;company_curPos=200;company_id=1;sort%5Bapp_name%5D=ASC;curPos=400
Furthermore, you can try this application to develop programs in .NET:
http://monodevelop.com/
for Iphone: well, it is not straightforward but you can try this link:
http://www.saurik.com/id/4
I'm a Linux user myself, so the links above are "concentrated" on Linux as the primary dev system. Hope this helps! Good luck with your business!
Related
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
I developed a C++/QT application and I am trying to compile it for Mac, Windows and Linux. I chose C++ just so I can make it compatible with these major operating systems. I can compile it for mac just fine.
I found out about Cross Compiling but some are outdated or not well documented... or does not guarantee they will work on the latest version of Windows or a Mac.
I do have Virtual Windows and Cent OS installed on my machine but I feel that compiling the application manually would be over kill.
So, do you recommend any reliable cross-compiler? Or is there any way to automate the compilation so if I have to, it can compile by logging on to my Virtual Windows or Cent OS installations?
FYI... not only cross compile but also generate 32 bit and 64 bit versions!
For Mac and linux you don't have a big issue here if you got the g++ compiler installed in your OS. But you will need to install Mingw or cygwin in the Windows installation to provide the gcc and the g++ compilers for your programs and if you want to automate your compilation process you can use a Makefile or try to see the autotools.
The only cross compiler that I know of is GCC. I have actually used it on Linux to cross-compile for S/390 a while back, and also to cross-compile ARM code on a Power Mac (I used the instructions here to set it up).
That said, I think that what you want is to cross-compile Windows x64 on a 32 bit virtual machine running Windows. If that is the case you are lucky, because Microsoft actually gives away the cross compilers for free with the Windows SDK since Windows 2000 SDK. I actually use the Windows Vista SDK (ver 6.1) on Virtual PC running XP to compile for Windows x64. Here you can download the latest version of the SDK, which comes with the compilers. I looked on the system requirements and it still supports XP, so this should be good for you.
Please note that the compilers are the same that come with Visual Studio, but you will have to invoke them from the command line environment installed by the SDK by either using 'cl' or 'nmake'.
You can chose the compilation mode by issuing SETENV /x86 for 32 bit or SETENV /x64 for 64 bits -there is another mode for Itanium but I have never used it-. The Visual Studio IDE is not included because it is a paid product, but good quality compilers for free is a good enough to anyone.
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
I am currently using Eclipse for C/C++ programming. Though i am accustomed to using eclipse for Java, i cannot figure out a good workflow for using Eclipse for C/C++
What i find lacking is a good debugging support. STL structures (vector, map) are not displayed in debug view as they are equivalently displayed in Java. They are displayed in a very obscure manner which is hard to interpret.
Upon googling i found
Better variable exploring when debugging C++ code with Eclipse/CDT
but i find the method not robust. It cannot display STL structures with objects (strings too) in them. Extending the .gdbinit file to support those will be an entire new project for me (as i am a new programmer)
Is there some other IDE good for C/C++ programming and debugging. Or is there something i am missing because certainly for such a industry standard language there must be some good
support out there.
EDIT: I am on a Win or *nix
I use visual studio express on Windows. It is free with alot of debugging functions.
1. Microsoft Visual Studio Express C/C++ (Best for Windows)
2. Code Blocks (Best of *nix)
3. Eclipse for C/C++
4. Netbeans
Hope this helps
On Linux I would prefer to use Code::Blocks
You can also look for NetBeans
GNU DEBUGGER
The C and C++ editor is well integrated with the multi-session GNU gdb
debugger. You can set variable, exception, system call, line, and
function breakpoints and view them in the Breakpoints window. Inspect
the call stack and local variables, create watches, and view threads.
You can evaluate a selected expression by moving the cursor over it
and viewing the tooltip. The Disassembler window displays the assembly
instructions for the current source file.
If your on a mac xcode is pretty good.
Embarcadero C++ Builder, also available as part of RAD Studio, is quite good, and has been undergoing significant development over the past couple of years.
It can be used to develop Win32 apps, Win64 apps, Mac OS X apps, as well as iOS and Android apps (the mobile OS's are only in the RAD Studio in the Delphi language for now, but C++ support is expected by the end of the year)
It has excellent debugging support as well. The IDE runs only on Windows, but does work quite well in a Virtual Machine running Windows inside a Mac, with either VMWare or Parallels. It does require a Mac, running Xcode, to compile Mac OS X or iOS applications -- that can be a separate computer, or the "Mother Ship" if you are running Windows in a Virtual Machine on the Mac.
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
I want a portable C++ IDE for general development, and too to develop basic Windows GUI applications.
In my research, I've found this (with latest version date):
CodeLite IDE (2010-04-02)
Ultimate++ (2010-03-16)
Qt Creator (2010-02-01)
NetBeans (2009-12-10)
Code::Blocks (2008-02-28)
Bloodshed Dev-C++ (2005-02-22)
But I don't know if some these IDE's supports Windows GUI development (or Cross Platform GUI development) or if can be portable (NetBeans can be portable).
EDIT: Reading the replies and doing more research, I'm near to choose between NetBeans or Qt Creator. But Qt Creator is 287mb (big for portable development). So sad looks that NetBeans, even being small (c++ is near to 30mb) needs Qt library for GUI (278mb)...
Qt Creator is a good choice if you want to code cross platform GUI programs.
Qt is an excellent cross platform GUI library.
The bash shell (and it's tools) + vim + cmake + mercurial = love. Bash is available on all popular platforms, even windows
p.s., I forgot gdb + ddd.
The IDEs you named are all cross-platform and available on Windows, Mac OS X, and Linux. That said, you only really need to make your code cross-platform (use Boost and Qt to do that). I personally use Xcode on Mac OS X, GEdit or Anjuta or KDevelop on Linux, and Code::Blocks on Windows. You might also be interested in my C++ Application Project Template and C++ Library Project Template, which provide a portable cross-platform build using the CMake build system, and which uses both Boost and Qt; the application project template already has code to create a "hello world" GUI if you use the flag "--gui".
I should also point out that CMake is capable of generating project files for a wide variety of IDEs, so an advantage of a CMake build is that you can generate makefiles (the default), but you can also generate a Visual Studio project (Windows), a KDevelop project (Linux), or an Xcode project (OS X) from just the one project description file, allowing one to use the native IDE for that particular development platform.
You can make a portable NetBeans, as well as Code::Blocks, Geany, Dev-C++, or Eclipse.
Any of the above should be able to do Windows GUI or cross-platform GUI development, just make sure you have a copy of all necessary libraries on your flash drive. If you use portable Cygwin on the flash drive, you can include gcc (so your IDE has a compiler as well) and the cygwin versions of a variety of UI libraries (gtk, FLTK, wxwidgets, qt, etc etc).
An alternate route that I have seen some people take is to load up a Linux installation in a virtual machine, then carry that around on the flash drive along with something like Portable VirtualBox. I would recommend copying it to the hard drive first, the performance would be terrible running it straight off the flash drive.
Have you considered Vim. Not exactly an IDE but you could easily put versions on one USB stick to allow you to run anywhere.
For some things I like Eclipse but it is only portable in your sense if Java is installed on the host machine. The other big problem with Eclipse is that it is fairly machine demanding and in my opinion requires a fast SMP machine to work well. Frankly though I don't use Eclipse for any of the "C" languages right now.
A slightly tougher choice might be EMACS again using the same approach as with Vim. That is putting multiple copies for your different target machines on a USB stick.
In the end I have to second something else suggested, that is the best portable IDE is a laptop. For example you can have several very good IDEs installed on a Mac and easily transfer files to a target machine. Being Unix it is fairly easy to install the GCC or LLVM of your choice even cross compilers. The big problem with a USB dongle approach is that you never can be sure of having everything you need there.
Xemacs. If you want something that you can keep on a flash drive with a ton of other tools. It isn't full features, but sure is a step up for writing software than vim.
Well, it doesn't have a portable version, but as a general and multi-platform IDE, I would definitely go with Komodo Edit. I love the autocompletion and call-tips features. They boosted my coding speed and productivity by 1000x. I know I sound like an ad, but don't worry, it's my most sincere opinion.
If you want cross-platform development, I agree with whoever mentions Qt. It's a really great, reliable (depends on your requirements, of course) and flexible cross-platform framework.
Good luck!
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 8 years ago.
Improve this question
For many years I have used two great tools BoundsChecker & Purify, but the developers of these applications have let me down, they no longer put effort into maintaining them or developing them. We have corporate accounts with both companies, and they both tell me that they have no intention of producing versions to support 64 bit applications.
Can anyone recommend either open source or commercial alternatives that support 64 bit native C++/MFC applications?
Viva64 (http://www.viva64.com/viva64-tool/) tool provides detection of errors typical of 64-bit Windows applications. Viva64 is a lint-like static analyzer of C/C++ code. Viva64 integrates into Visual Studio 2005/2008 environment and provides user-friendly interface to test your software projects.
Parasoft has a tool called Insure++ (link: http://www.parasoft.com/jsp/products/quick_facts.jsp?product=Insure) which says it'll do that.
I've used Insure++ on 32-bit and 64-bit apps on Linux and it worked okay. It sometimes got confused when it was trying to parse template/stl code and would fall over.
That url says it works on 32- and 64-bit windows, good luck!
BoundsChecker 9.01 now supports VC2008 and x64 bit, at last.
insure++ only workse if you instrument your code. I once tried it. It took about 5 minutes to compile about 1000 lines of code. Since the project that I needed to compile was huge, I quickly determined that Insure++ was not going to work.
Not to mention their reporting, or output from Insure++ is pretty archaic. also the runtime performance penalty was attrocious.
Note about boundschecker from numega/compuware/other_new_company: Don't buy it. It's only profiles 32 bit apps. It does NOT do 64 bit apps. It can be installed on a 64 bit OS though. I stopped using it years ago on our app. I do use it on CppUnit Tests though... sometimes.
In general I'm completely disgusted with all the native memory leak tools out there. They all don't work, or just lock up your application on shutdown.
FYI: BoundsChecker 10.0 runs on Windows XP through Windows 7, on both 32 and 64 bit versions. It supports WOW64 applications, and it also supports Visual Studio 2010. In fact, we released VS2010 support within 30 days of Microsoft's release.
We are catching up with our backlog. We were very late getting the VS2005 and VS2008 support out (with BC 9.0, Fall 2008), but there were a variety of reasons why this happened. The miracle was that we got it out at all.
BoundsChecker 10.5, when it comes out, should have some more goodies. Stay tuned.
Disclosure: I work for MicroFocus.
Intel(R) Parallel Inspector (http://software.intel.com/en-us/intel-parallel-inspector/) is a threading and memory-checking plugin tool to Microsoft* Visual Studio; it supports 32-bit and 64-bit C/C++ on Windows. It's a commercial application with a 30-day free evaluation.
Disclosure: I work for Intel.
I've used bounds checking and other dynamic analysis tools, and while the architectures are different it's the code that you're checking - in theory you could run bounds checking on any backend and the result would be the same - the code either steps outside its bounds or it does not.
The only complications are addressing more than 4GB of memory space, dealing with pieces of code you can't cross-compile to a 32-bit architecture (64 bit object files for which you have no source, etc), and general 64 bit migration issues (platform specific code such as checking for 0xFFFFFFFF instead of -1)
What other problems are you running into doing bounds checking on your program? Are you unable to compile a 32 bit version?
It's not your ideal solution, certainly, and one should always check the code they're going to run, but in this case you might not have a choice, unless you want to do your own bounds checking (which is a good idea in any case...).
-Adam
it is my understanding that BC 9.0 will support WOW64
Application verifier, for x64 and x86, detects heap corruption
http://www.microsoft.com/download/en/details.aspx?id=20028
From IBM PurifyPlus support for 64-bit versions of Microsoft Windows:
Technote (FAQ)
Question
Is IBM Rational PurifyPlus supported on 64-bit versions of Microsoft Windows?
Cause
64-bit versions of Microsoft Windows are getting popular.
Answer
Beginning with version 7.0.1 iFix 003, PurifyPlus supports testing 64 bit applications on Windows.
More information about iFix 003 can be found in the following technote IBM Rational PurifyPlus for Windows v7.0.1.0-003
You install this version of Purify and you get a "Purify (for 64-bit applications)" entry in your start menu.
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 8 years ago.
Improve this question
I'm looking for a tool which can generate a Makefile for a C/C++ project for different compilers (GCC, Microsoft Visual C++, C++Builder, etc.) and different platforms (Windows, Linux, and Mac).
Other suggestions you may want to consider:
Scons is a cross-platform, cross-compiler build library, uses Python scripting for the build systems. Used in a variety of large projects, and performs very well.
If you're using Qt, QMake is a nice build system too.
CMake is also pretty sweet.
Finally, if all else fails...
Try Automatic Makefile Generator.
It has support for the following compilers:
Borland 3.1
Borland 5.0
Borland 5.0, 16 bit
Borland 5.5
Borland 5.6
Borland 5.8
CC
GNU g++
GNU g++, dynamic library
Intel 5, 6, 7 for Linux
Intel 5, 6, 7 for Linux, dynamic library
Intel 5, 6, 7 for Windows
Intel 8,9,10 for Linux
Intel 8,9,10 for Linux, dynamic library
Intel 8,9 for Windows
Intel 10 for Windows
Visual C++ 5
Visual C++ 6, 7, 7.1
Visual C++ 8
Open Watcom
Watcom 10A
Watcom 10A, 16 bit
I've used Bakefile before with some success. It's fairly simple and seems to work well.
CMake is the only tool which can actually generate real Visual Studio projects (i.e., not "Makefile"-projects which call out to an external tool), and which automatically recreates the projects when the build input file (CMakeLists.txt) changes.
SCons performance issues are well-known and a thoroughly debated topic on the SCons mailing lists.
I would vote for OMake. It fixes all complains I had with GNU make:
it's a full-blown language.
uses MD5 instead of timestamps.
provides a minimal shell which implements the most useful Unix commands on all platforms: find, sed, AWK, etc.
works with either Unix or DOS style pathnames.
extensively documented.
supports parallel builds.
fast.
I'll also second CMake. I've been using it for quite a while on a multi-platform project and I'm very satisfied with it.
Automatic generation of (M|m)akefiles makes me worry about what you're trying to do here.
Do you understand what goes on under the covers when you type make? Or gmake? I'm only asking because if you don't when things break, such as new code changes not being incorporated into the build, you'll have difficulties trying to work what has happened.
To start to understand make, can I suggest having a read of "Managing Projects with GNU Make" by Robert Mecklenberg. The early chapters cover how make is working. Getting your heard around the fact that make is backward chaining is one of the biggest things you can do.
If you don't, and your system appears to work, then you'll be, to use The Pragmatic Programmers' term, "programming by coincidence". (-:
BTW Great articles available at their site! And I'm not involved with them. YMMV. Yada-yada...
One issue to consider is do you want a "makefile" creator or a replacement build system? The problem with replacement build systems is that you typically don't get good IDE integration for platforms whose users expect this (Visual C++).
If you do want a makefile creator instead of a replacement build system, take a look at MPC. It's free and open source.
A recent addition to the list of make replacements is waf. From personal experience, SCons does the job pretty well.
I am working on a similar Makefile auto-generator projection called CodeMate, developed by using Ruby. Maybe it is not that mature for large applications right now, but I will keep working on it to make it better.
Users should not need to edit any configuration file to build the software, or at least it is supposed to be. The learning curve should be minimized.