Slashdot Mirror


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."

10 of 322 comments (clear)

  1. It is not recommended by YellowSnow · · Score: 5, Funny

    that you compile under the influence of any type of alcahol

    1. Re:It is not recommended by eclectro · · Score: 5, Funny


      that you compile under the influence of any type of alcahol

      but it's ok to post on slashdot???

      --
      Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
  2. compiling? by Anonymous Coward · · Score: 5, Insightful

    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.

  3. Visual C++ under WINE by kruetz · · Score: 5, Interesting

    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?
  4. CVS by YoJ · · Score: 5, Interesting

    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.

  5. Re:which begs the question by fredrik70 · · Score: 5, Informative

    VC++ isn't a bad compiler at all, really. They got a quite shitty implementation of the STL lib though(might have changed now - I use VC++ 6). Also isn't properly following the C++ ANSI standard. for example the scope whenyou declare vars in for loops is broken. MS is aware but they can't really fix it easily now, since *lots* of old MFC code would break if they fix it. Yuo can set a flag though to enforce ANSI but it not on by default. Compiler makes quite good code though. If you want a more 'proper' closed source compiler go for Borland's - the command line version is even free on their website! (after a rather hefty registration proc though)

    --
    if (!signature) { throw std::runtime_error("No sig!"); }
  6. Re:Awesome by harlows_monkeys · · Score: 5, Insightful
    Be careful what you wish for. It's excellent handling of Windoze apps is part of what killed OS/2. Developers: "Why port it when it can run the windoze version?"

    I don't believe that this is actually true. Win95 had excellent Win3.x compatibility, but developers nevertheless rushed to develop Win95 software. Why would Win3.x compatibility in OS/2 cause developers to forego native development, but not have the same effect on Win95?

    I believe that what really killed OS/2 was IBM's attitude toward developers. Microsoft made it trivial to get started in Win95 development. Hell, you could go into Egghead and buy an MSDN subscription and all the tools you needed.

    Compare to OS/2, where you had to apply to IBM for permission to develop, and buy an expensive development kit (at least, to officially develop).

    I believe it was Jerry Pournelle who wrote of his experiences at a trade show, where he went to the MS booth, and asked what he had to do to develop for the upcoming Win95, and they handed him, on the spot, a development kit. At the IBM booth, he asked what he had to do to develop for OS/2 (a system that was already for sale, unlike Win95, which was still in beta). Did they hand him a development kit? Nope. They handed an application. If they decided he was worthy, he'd be allowed to buy a development kit.

    I think that is the reason OS/2 development never took off.

    Note! I'm not saying for-pay developer programs necessarily kill a platform. Apple used to have a for-pay program, but it was a joy, because of the astounding support. You sent any question off to DTS, and they would quickly have a good engineer, with full access to the source and the developers, answer it. I was having trouble with interrupt handling in a device driver, and they send me the detailed comments from the ROM source code for the interrupt handler, which explained exactly what was going on.

    With Apple DTS, the feeling I had as a developer was that I was dealing with my peers at Apple, who wanted to cooperate with me to make something great. With IBM, I always felt like an insignificant pawn in whatever they were doing.

  7. Re:Awesome by Losat · · Score: 5, Interesting

    I think you are refering to IBM's Developer Connection, which was a bit like MSDN. This was fee-based but may have been free if you met certain criteria. It seems like they also had a developer partner program, though I can't remember for sure.
    However, there were certainly compilers and development kits just anyone could buy and use (no application to fill out, just buy the box).
    Exmamples: IBM's own excellent C-Set/2 (C/C++ compiler) (later Visual Age C++); Watcom's excellent C/C++ compiler; Borland's C++ for OS/2; Two (yes two!) distributions of gcc (gcc2 and emx). There were also two "Turboish" Pascal compilers and three "Visual" Rexx packages (somewhat Visual Basic like but using the Rexx language).
    Still, I do agree that IBM could have been more friendly to developers, and IBM certainly did enough things wrong with the marketing.

    --
    I'm not a lawyer, but I play one on Slashdot.
  8. Even a man who's pure of heart by YellowSnow · · Score: 5, Funny

    and uses the preview right
    can turn to a troll
    when the typos roll
    and the bottle is empty and light

  9. weird... by dolson · · Score: 5, Funny
    You don't need Wine if you know what you're doing...
    dana@digory:battlepong$ make
    g++ `sdl-config --cflags` -c sound.cpp
    g++ `sdl-config --cflags` -c collide.cpp
    g++ `sdl-config --cflags` -c ball.cpp
    g++ `sdl-config --cflags` -c game.cpp
    g++ `sdl-config --cflags` -c menu.cpp
    g++ `sdl-config --cflags` -c player.cpp
    g++ `sdl-config --cflags` -c randgen.cpp
    g++ `sdl-config --cflags` -c init.cpp
    g++ `sdl-config --cflags` -c main.cpp
    g++ `sdl-config --cflags` sound.o collide.o ball.o game.o menu.o player.o randgen.o init.o main.o -o bpong -lm `sdl-config --libs` -lSDL_image -lSDL_ttf -lSDL_mixer
    dana@digory:battlepong$ file bpong
    bpong: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), not stripped
    dana@digory:battlepong$ make clean
    rm -rf *.o bpong
    dana@digory:battlepong$ sh cross-make.sh
    g++ `sdl-config --cflags` -c sound.cpp
    g++ `sdl-config --cflags` -c collide.cpp
    g++ `sdl-config --cflags` -c ball.cpp
    g++ `sdl-config --cflags` -c game.cpp
    g++ `sdl-config --cflags` -c menu.cpp
    g++ `sdl-config --cflags` -c player.cpp
    g++ `sdl-config --cflags` -c randgen.cpp
    g++ `sdl-config --cflags` -c init.cpp
    g++ `sdl-config --cflags` -c main.cpp
    g++ `sdl-config --cflags` sound.o collide.o ball.o game.o menu.o player.o randgen.o init.o main.o -o bpong -lm `sdl-config --libs` -lSDL_image -lSDL_ttf -lSDL_mixer
    dana@digory:battlepong$ file bpong
    bpong: MS Windows PE Intel 80386 GUI executable not relocatable
    It's MAGIC.