Compiling Under Wine
now3djp writes "Interesting article over on CodingStyle that demonstrates how I successfully eliminated wasted time maintaining an MS-Windows computer when I could build natively from my GNU computer! /. has followed other cross compilers in the past. This article is different because I used MS's own compiler! This allowed me to get on with real games porting; with only a proportional increase in compile time. Wine has really come a long way in supporting simple apps, let us hope it reaches a 1.0 soon."
I can't wait til we have a fully functioning windows emulator. Even if it will kill the need for native apps (read games).
I find it entertaining that when I went to read the comments, I got to see an article for Visual Studio .NET :).
--
lds
that you compile under the influence of any type of alcahol
does microsoft compile windows under wine?
My problem? I was perfectly gruntled, until some numbnuts came by and dissed me.
Let me tell you something, I've compiled not only under wine, but on vodka, whiskey, shit even ACID. And when I was on acid, my monitor tried to eat me...
It's not so interesting to me that he managed to compile using VC++ under WINE. VC++ doesn't call any of the APIs you code, it just puts machine code into the file saying you can call them if you want. It's all well and good to have VC++ compile DX9_CreateSurface() (or whatever) into a bunch of PUSHs, POPs and a JMP instruction, but that doesn't help if WINE can't actually call that function when you're testing. It makes more sense to me to use Bochs or VMWare to test your application if you're developing on multiple platforms. Anything less would be short-changing your Windows clients.
GNU/Build GNU/natively GNU/on GNU/a GNU/computer GNU/using GNU/a MS-Windows/compiler GNU/without GNU/a MS-Windows/computer!
Last time I tryed to compile something under the influence of (way too much) wine, I ended up on the floor infront of my computer. All I remember was waking up to a formatted hard drive; compiling under the influence of wine sucks!
"Entropy is the bad-guy, and he is everywhere"
If the people are forced to test applications on slow machines, we may not have word processors that need 40MB of ram and a 933MHZ pentium III to run.
Fight Spammers!
Wine has really come a long way to facilitate running major applications such as Visual C++. Features that "just work" often do not get mentioned because there is nothing to say. Wine has many excellent features like this. However, I have expressed the problems with Wine currently and I expect that in a potential follow up article many of these will be resolved. Wine has been in development for over a decade now. As it is finally nearing a 1.0 release, I see how much better it was than the 1.0 release of MS Windows.
Using Visual C++ on GNU/Wine gives me all the benefits of being able to develop a 100% compatible MS-Windows version of the game, while saving me the time of maintaining another Win2k machine version of the source and moving to that machine to compile. It has been a great time saver for me and I strongly expect this information will be very useful to myself and others in the future.
Okay, so you can use Visual C++ compiler under WINE. Is that terribly surprising when WINE can run MS-Office for the most part? The compiler takes the source files and libraries and produces an executable or library. I don't know for sure, but I wouldn't think that too much of this would involve heavy usage of the Win32API, much less the lesser-used and less-tested-under-WINE parts. For the most part, the compiler would be doing tokenising, parsing, translation and optimisation, which would in all likelihood use no external libraries or anything.
I don't mean to rubbish this article, I'm just saying that I don't see it as being terribly surprising. On the other hand, I think this is a great use of WINE and is definitely more innovative that anythin I would use WINE for. And as he says in the article, there was a lot of fiddling around with command line arguments and environment variables. But if you're compiling from the command-line under Windows, it's just as bad (no, really).
A much greater "victory" for WINE would be to have the whole VisualStudio ensemble running. But I'm not sure if this is feasible, especially in the short-term. By "victory" I don't mean something along the lines of "Linux now allows you to run a quality IDE", because KDevelop and Eclipse are great IDEs. Instead, VisualStudio and Office are probably the most complicated pieces of software written by MS (excluding Windows itself) and for WINE to be able to run them both as if they were running under Windows would be truly a fantastic achievement.
This sig intentionally left bla... dammit!
Who's got the whiteout?
I don't see me - just set ads.doubleclick.net to 127.0.0.1 in your hosts file. Granted thats not the only host you have to add, but there are regularly maintained lists out there of good people to block :).
You know (shaking the finger of logic and wisdom), if they (MS) sold such a product for the GNU environment for a couple hundred bucks...I would buy it.
Too bad it'll never happen. I'm sure if such a project began within MS, Bill (or some exec) would scream "Heresy!". Remember, a win for GNU = a loss for MS in most cirsumstances.
Providing, of course, it didn't totally suck!
MS Sales Rep: "Well Sir, "doesn't suck" wasn't listed as one of your product requirements... Sorry, no refunds!"
I'd rather be a conservative nutjob than a liberal with no nuts and no job.
I'm a programmer for a Supplier of Software to the US Government and we are actively looking to port our products to Linux do to the strong interest from our clients. Specific Offices decide what products they want to implement and how to do it. We are investigating Emulating Windows as an one solution.
I look forward to the days when any program that is Windows Compliant runs on any platform that supports the Windows API.
That being said, the real problem I have is DRIVERS for my hardware working under Linux. If someone could emulate Windows enough to use standard Windows Drivers, there would be no more reason to use Windows at all. I truly commend those braves souls and companies who write drivers for Linux.
Now if there was a Proxy that accepted Microsoft SQL requests and sent them to a PostgreSQL backend transparently we would be free of the beast and save the Tax Payers lots of money paying my paycheck, plus blow our competiters out of the water. :o)
Wow! So RMS wants us to simply call it GNU now? Dropping the Linux part altogether? Sorta hypocritical to me ;).
Or do you run Hurd? Which is technically the GNU OS.
The above is meant to be funny.
Slashdot is a waste of time. I enjoy wasting time.
Does this guy really use the HURD, or is it just that he's an RMS mega-fan?
The author describes the problem he originally solves as being the pain of moving code between Linux and Windows, losing attributes, case problems, etc. The approach I take is to keep all code in CVS on my file server. I do compiling and editing on my personal computer; both Linux and Windows can handle CVS. This way you have to reboot into Windows for the Windows compile, but never have to worry about copying files or case changes.
I use Microchip's pic assemler through wine, for a small piece of code I maintain that runs on a PIC that wasn't supported by any GNU/Linux assembler when I started. I also maintain a legacy version of a very specific proprietary MSDOS (actually we run DRDOS) program that was written with Borland C, hopefully I will be replacing the last running bit of that with a DJGPP compiled version soon, which of course can be cross compiled on GNU/Linux without the need for Wine and bcw.
I know what your thinking, but when a piece of software has worked flawlessly (well almost!) for 15 or so years, and is 'mission critical' it is very hard to drop a platform and move on. I am hoping to try out a move to Linux some day in the near future so that I can take advantage of new features and things that just arent available for DOS. But unless I can convince everyone else of the benefits I may be supporting dos for quite some time (I am the only software person at this company).
I'm curious, what exactly will the "milestone" of version 1.0 of Wine actually mean ? I would doubt that it'll ever be 100% compatible with Windows 98/XP. So what feature list is the development team trying to complete before calling it 1.0 ?
I think that pretty much any other product would have been deemed a failure if it had endured a 10 year development life and not reached version 1.0. Unless of course we're talking about Duke Nukem Forever...
My experience of Wine is common to most people's I think; it looks like a great idea, but as soon as you try to run any non-trivial program, it simply locks up/doesn't work. I've looked at their website and looked at all the "passed" indicators on their test cases. That doesn't help me run my apps much though... do they need more test cases ? Are they simply too abstract ??
Just my $0.02 worth
Never, ever lose a file again. Ever.
Visual C++ doesn't do anything weird regarding Windows API. The IDE is a normal affair, and the compiler could be run without a user interface. It's really not testing Wine to it's limitations and the irony of situation is barely worth commenting on. This is non-news, the only thing this article achieves is to make Slashdot look like the anti-MS geeks with limited social awareness. Some things just aren't worth giggling at.
I don't even need to look at the poster to know that this is the work of micheal...
That's quite different from Winelib, which is indeed a separate implementation of Win32 that may "lack" some Windows bugs.
Use the Intel compilers, your code will be 50-300% faster.
50-300%? You're nuts. I've used both, and performance definitely varies...and if I had to choose one or the other as "generally producing faster code", I'd probably point at gcc.
Take a look at these benchmarks.
Gcc produces fastest code on 26 of the tests, icc on 9.
Furthermore, not all the optimization flags for gcc were being used (no idea why -fexpensive-optimizations wasn't used).
May we never see th
and uses the preview right
can turn to a troll
when the typos roll
and the bottle is empty and light
Next you will have some moron compiling under vmware or bochs or plex86. If you don't care about the abstraction or the 60% degradation in performance, and the fact that you have to rewrite all your make files to use vc++ nmake, this is for you. Its a convoluted mess IMHO. Using cross gcc for win32 on linux is a much cleaner way of doing this.
usercontent.css
,u bleclick'],d vertis'],a nner/'] {
i dth="468"][height="60"] {i dth="728"][height="90"] {
*[src*='ads.'],
*[src*='/ad/']
*[src*='/ads/'],
*[src*='/Ads/'],
*[src*='do
*[src*='us.a1.yimg.com'],
*[src*='a
img[src^='http://images.slashdot.org/b
display: none !important;
}
You can add whatever else you want there as well. Things like
/* this hides the usual 468x60 Flash banner ads */
embed[type="application/x-shockwave-flash"][w
display: none !important;
visibility: hidden !important;
}
/* this hides the not so usual but very annoying 728x90 Flash banner ads */
embed[type="application/x-shockwave-flash"][w
display: none !important;
visibility: hidden !important;
}
If you wanna get rich, you know that payback is a bitch
What the fsck is "GNU/WINE"! Aaargh! It's one thing to give RMS some credit, but this reeks of puerile toadying in an effort to look sophisticated in front of other juvenile sycophants.
Repeat after me, "WINE is not a GNU project!"
A Government Is a Body of People, Usually Notably Ungoverned
Oh please. Yeah, let's all cower in fear of Microsoft. Let's stop what we're doing because Microsoft might not like it. Let's always worry about being sued.
It might be a very real possibility, but it's one you should never worry about, just be aware of. It's as bad as terrorism, it only works if the target becomes terrified.
The Texas Instruments Code Composer Studio for the TMS 6701 DSP is only available for windows. For this project everything else is compiled for Linux-386 as well as embedded Linux-PPC.
Running the command line tools under wine works fine, and now I am able to have one intel linux box compile all the DSP and PPC firmware as well as the Linux GUI code in a cron job from the daily cvs snapshots.
Doing this has made things SO much nicer. I would prefer if TI had a linux version of their DSP compiler, and will continue to pester them for one, but in the meantime WINE saves the day and allows me to NOT run windows for weeks on end!
My Win2000 anti-uptime is around 3 weeks now. I am weaning myself off windows!
Running command line tools like compilers is one of the EASIEST things for WINE to do - All they have to do is read and write files and allocate memory.
Biggest hassle for me: having to make special sed scripts to deal with mixed case file names in the auto-generated makefile dependency list that are incorrect since the compiler assumes case insensitive filesystems.
--jeff++
ipv6 is my vpn
It's MAGIC.
what is your project's name...emacs *ducks for asbestos-lined safe room*
09f911029d74e35bd84156c5635688c0
i prefer to compile under rum
*hic*
I paid for lots of operating systems too. I have 2 versions of OS/2, 2 versions of DOS, windows 95 and 98, 3 copies of NT 4.0 and a copy of 3.51 and a copy of w2k that I got stuck with because it didn't work and I had to refund the client's money. Microsoft would not refund what I paid them. Microsoft would not allow me to either return or exchange the unopened copies of Windows NT 4.0 either. I was a Microsoft dealer at the time and bought a 3 pack - which was about a month before w2k was announced. So I got stuck... then stuck again with w2k.
I have only one computer that runs windows NT so only one of these operating systems is in use.
I have red hat linux 6.1 server edition, OpenBSD 3.0 and Mandrake 8.1. I paid for all these too even though they are free.
Now, my desktop runs Debian and it is just great and I did a net install. Guess what, I don't know how to upgrade that RH 6.1 machine. Sure I can reformat the hard drive - but it contains a LOT of my work and I don't want to lose it. With Debian, an upgrade is easy.
In addition to this I bought 2 copies of Brief and I can't use it even though it is my favorite editor. I did a trial d/l of CRiSP and it is a wonderful editor, fully Brief compatible. I contacted them about licencing. I run 8 machines in my home and am a member of the local Unix users group and do consulting work. The CRiSP people told me I would need a "Licence Manager"! I decided to learn Emacs. It has a CRiSP mode and is looking better every day.
I bought 3 versions of M$ FTN and copies of M$ C as well. The last version of M$ FTN was such a botch that I could not use it. I have the Borland OS/2 C/C++ compiler. It was so broken I didn't use it.... but I paid for it. I have Borland C++ professional builder 4. I want to do C/C++ cross platform development.
I phoned Borland. I think they told me that I can buy Delphi for Linux. I think they told me that the language is supported on both platforms but that the API is different. The person on the other end of the phone didn't seem too knowledgable. So I am going into wxWIndows or gtk because these people actually SAY they are cross platform. Thus, I do not have any C++ builder code and didn't get my money's worth.
I have 4 versions of Oracle - paid for by the taxpayer (because I am one of their developers). The DOS versions were so bad we couldn't use them on that platform. The OS/2 versions were better but still not good enouf. It is not possible to install 8i for red hat 6.1 (even though that is the version oracle says 8I is for) unless you CAN STAND ON YOUR HEAD and read the paper What you need to knwo before you even THINK of installing oracle 8i . Imagine having to backdate the glibC and install an old version of Java from blackstrap just so you can get the installer to work. Why couldn't Oracle have put their developers into a room with 2 cd sets. One set - an off the shelf shrink wrapped copy of Red Hat 6.1, and the other set - a copy of the 8i source tree. And then make sure they don't have INTERNET access so they can't cheat and create a version that you can't install. Leave them there until they solve the problem or rot to death trying!!! Damit. I have lost MONTHS of my life solving other people's problems.
Guess what, I am porting the client's apps over to PostgreSQL. See ya Oracle!!! Goodbye!
So, of all the software I bought most of it did the job for a precious short time or didn't do the job at all - with the exception of Brief - which was just excellent. And what happened to Brief? Borland bought the rights, put it on the shelf and AFAIK I can't buy it any more.
So frankly I really don't care if that copy of VB ++ was paid for. Even if it wasn't, I do not feel M$ was ripped off . I feel I was ripped off.
I have been ripped off Over and Over and Over because I bought these products in good faith and paid for them with my hard earned money. Now I can't use them. Some never did what they were advertised to do. Others were discontinued and I lost out.
Let me tell you about the 2nd last copy of M$ FTN that I purchased. I found a bug where the conpiler just eliminated an "IF" statement. No errors, no warnings, and no machine instructions either. I filed a bug report with M$ with sample code. Months went by. I re-filed the bug. Months went by. Finally I phoned them and sat on wait for like an hour - and paid for this too. The rep told me the bug was fixed in the new version. So I bought it.
When the new version arrived I tried out the sample code from the bug report. The problem was still there. Oh, and the last version I bought couldn't be used it was so bad. The client dropped PC development ideas and switched to SUN.
What the Open Source movment has done is a refreshing breath of fresh air and IMHO it is the ONLY way that the programmers of the future are going to stand any chance of avoiding the endentured servant trap that closed source software creates. Anyone questioning this should realise that in order to use closed source software they have to agree to the licence terms and these are arbitrary and non-negotiable. If you find the terms unacceptable then you can't be a programmer. That is unless you can find the tools and the infrastructure you need elsewhere.
Well, we programmers are being attacked another way now.... patent law. If this gets too well established we won't be allowed to be independant. We'll have to work for a big company that has managed to negotiate cross licensing. Either that or pay the piper each time we want to go to the can.
Water flows down hill and the infrasructure required to build some of the closed source tools, like Windows NT/2K/XP, or Oracle or JAVA or say a compiler suite like Visual C++ or Borland Professional Builder is so great that it looks like an ocean. Oceans are hard to move. Oceans are also hard to re-create. There is no way that any company could recreate from scratch an operating system like XP. The environment that XP grew out of no longer exists. IBM tried and failed.
Over the years all computer companies with the exception of perhaps IBM,HP,M$ have failed. Who here thinks Microsoft will survive into the year 2050? Gates won't be in charge then. Who here thinks that another company is going to loom up that can invest the BILLIONS in infrastructure required to create an alternative?
The future of software has to be opensource because that is the only way for us programmers to ensure that we will have the tools we need and the right to use them.
If I add up the THOUSANDS I have spent on software over the years it illustrates to me that I should have been looking for better solutions a long time ago.
Seems like there have been some reports that Microsoft Windows is more stable under VMWare than on the bare metal. It does make sense that the virtualized system as presented by VMWare is more regular and less messy than the bare metal.
Yes, but. The bugs taken individually won't show up. It's when they get together (and breed or something) that you get troubles.
I think if you are serious about cross platform development, you need to have a native install of all the platforms you intent to port to. Either multi-boot or seperate boxes. Why? Well amy emulator, WINE espically but even VMWare, has certian quirks and differences that native hardware does not. You need to test it as it will be run to be sure. Also, if you are using any advanced 3d function, the emulators are going to fall flat on their faces.
If I were really serious about a commercial cross platform release, say Windows and Linux I think I would want a ton of testing. I'd probably want at least 3 different systems, all tht had a copy of Windows 98, ME, 2k, and XP plus at least 3 big Linux distros. While in theory something complied for any hardware under any verison of Windows should work on any other, it's just not the case. Same for Linux. You want to test for the little "gotchas" if you want to make sure you have a really stable software.
When Dosemu reached 1.0, usage of DOS had become very low. So let us hope for a Wine 1.0 soon:)
Now this is impressive. Things like this are what WINE should be all about. Amazing.
I disagree, it's depressing not impressive:
In summary, while the article probably accurately describes the author's actions, there is nothing in his account that others should be emulating. More experienced developers should be consulted in the search for best practices.
I write this as someone who has done software development for almost 20 years; more than 20 if you count my high school years as a computer hobbiest.
The safest bet is to not have your job depend on tweaking the last little bit of performance out of a customer's machine when you have only a vague idea of which platform they might be running on. Either improve your algorithms in the whole, or hide the slow performing code in a place where the user won't notice. (if possible)
That said, another option is to isolate the performance-critical sections into chunks of code which get optimized separately and then have cpu-detection code choose the appropriate chunk at runtime. The debian atlas packages do something like this, though (AFAIR) they use hand-optimized assembly instead of just using compiler flags and/or different compilers. (and yes, you can have both the sse- and 3dnow-optimized packages installed on the same machine, and the code will load the appropriate shared library at runtime)
Then, instead of standardizing on a compiler, you'll need to standardize on a build system that will let you compile the code as you need it compiled.
The author first asserts that the process of moving files between the systems causes the upper/lower caseness of the filenames to be munged
This is the case, I've run into this problem myself many times and it has little to do with how the files are saved and much to do with how fs-drivers are implemented and configured. Compare to how you often end up with read-only files if you copy them from a CD in Linux. Sure you can change some settings, but then often get other side-effects in other situations (goes for both). I believe he is the original author of his project.
The author displays no knowledge of the network mounting of filesystems using SAMBA (CIFS) or NFS.
The fact that he is dual-booting strongly suggests that he (like most of us) only has one development machine, not a complete network of machines. Don't get ignorant just because you are better equipped.
Why isn't the source code checked into a configuration management tool, like CVS?
Once again, he only has one workstation, thus is CVS out of the question since it needs to be hosted under one of the OSes and he can only run one at once. Besides, CVS is in most cases just unnecessary and complicates and slows stuff down if you are the single developer. You can make backups through normal file copying.
As others have already noted elsewhere, he will still have to test on the target platform.
Which I'm sure he does now and then too (by dual booting). However, if you just need to do some minor change in platform independent code it's really a bliss to not need to dual-boot.
Besides, your criticism of using VMWare for testing is quite irrelevant. It's true you need to test on multiple environments to know that it works on them all, but as you said, VMWare with Windows X *IS* one of these environments. If he's dual booting he only has access to one environment anyway, using VMWare as well will add one or more extra testing environments.
I would have LOVED to have a similar setup as his when I was developing BladeEnc. Like him I only had one development machine (couldn't afford more) and constantly needed to dual-boot in order to recompile and package a new version. The platform dependent parts of BladeEnc were very limited and untouched for 95% of the development, thus this setup + testing under wine (for possible quality degradation due to compiler excentricities) would have been more than enough during most of my days. Only performance tweaking would have to be done in windows environment.
With your 20+ years as software developer you obviously have found your way of working in your projects and with your budget. Don't knock others creative solutions for solving their problems with their resources in a totally different situation.