Slashdot Mirror


Xmingwin For Cross Generation Applications

An anonymous reader writes "Xmingwin makes it practical to generate Windows programs from a Linux server. This column gives a recipe for setting up Xmingwin, outlines the most important reasons for doing so and shows you how to generate executables for multiple platforms -- including Windows DLLs -- from a single Linux source."

11 of 108 comments (clear)

  1. Re:Testing ? by catscan2000 · · Score: 5, Informative

    If you're looking to replace Visual Studio for programs that don't rely too much on the COM wizards and such, try out Dev-C++. It's pretty fast, too, and it uses GCC :-).

  2. Quick Note by jchawk · · Score: 3, Informative

    For those of you wondering, this only works for apps that you are currently writing. It isn't going to work for just any windows app, but it's still kinda neat.

    ---

    If you just signed up for a new sprint pcs cell phone I can get you a $10 rebate. Email me at jchawk@ my website (tr0n.com) that's a zero in tr0n.

  3. Re:Testing ? by batkiwi · · Score: 2, Informative

    The number one advantage I can see for this in the environment I work in is automated builds.

    We have big linux servers that do all of our java compiling nightly (and auto-runs junit tests/etc), but you can't do that for your windows dll's without a seperate box. Now that need is gone.

  4. Re:Surely a security risk by vrmlguy · · Score: 2, Informative
    Huh? I'm not sure I understand what you're saying here, so allow me to paraphrase:

    Placing a .EXE file on a Linux server helps spread virii, because the Linux server won't check to see if the file is infected with a Windows-based virus. This is bad because if the file becomes infected, the infection will be missed.

    I'm making the generous assumption that you aren't saying that the Linus system will create an infected executable. Even so, there seem to be some unwritten assumptions here.

    First, you assume that there is an infected Windows system. Just about every commercial environment that I'm aware of runs some form of anti-virus software on every Windows-based server and desktop. This means that there is little chance of infection by a known virus. I will readily conceed that unknown infections, such as Slammer, can still be a problem, but that leads to your second assumption.

    You seem to think that any Windows-based system with read-access to the file also has write-access to it. This runs counter to the best-practices adopted at most sites. A fundimental rule of security is to provide no more access than is needed to get the job done. File servers generally restrict the average user from modifying static resources. In this case, I would include anyone with a Windows-based system as an average user. Since they aren't running a developement environment, there is no need for them to write to the directories where the software is stored.

    So, did I miss something, or did you post of subtle troll?

    --
    Nothing for 6-digit uids?
  5. Re:Xmingwin vs gcc-mingw32 by vrmlguy · · Score: 3, Informative

    The difference is that this is running mingwin as a cross-compiler. Yes, we've been able to produce win32 executables using mingw and gcc for years now, but that's by running everything on a Windows-based system. Now we can run the same suite of tools on a Unix-based system.

    --
    Nothing for 6-digit uids?
  6. We've had this for years by Stiletto · · Score: 4, Informative


    I've been using a MINGW32-based linux->win32 cross-development environment for years. The same concepts apply as for cross-compiling to different hardware architectures. This is definitely not new software. With properly written makefiles, you can build to target both Linux and Win32 platforms from the same source tree and build environment. Of course you must test on both platforms, but having a setup like this definitely makes it easier to build large projects for both Windows and Linux.

  7. Re:Usually... by grolim13 · · Score: 4, Informative
    No, you're misunderstanding how this works. Cross-compilers have been around for ages, this one just happens to have the advantage that it inherently portable (because it is based on GCC) and targets Windows (which is phenomonally popular).

    Wine works by reimplementing a part of the Windows API. Mingw32 is a compiler which takes C/C++ programs and Windows libraries and generates Windows executables. Its C/C++ support is just about flawless as it uses GCC; it can link programs against native Windows libraries just like any Windows compiler would; and it produces ordinary Windows executables.

    These Windows executables, however, won't run natively on the (Linux) host machine.

    Note that this is also not an automated system for writing portable programs; Xmingwin won't compile anything that wouldn't compile on a normal Windows machine. But if you have code that is portable, you can save a lot of hassle by having just one machine to build binaries for several platforms.

  8. Re:A real world example is needed -- Voila! by Anonymous Coward · · Score: 1, Informative

    I can say from experience that most of the wxWindows samples compile and run quite well. I didn't test them all but all I compiled ran. Some of them are a lot more involved than "Hello World". I made both static and .dll versions of the wxWindows lib and tested them under Wine and NT 4.0

    BTW, here's a quick and dirty HowTo I set up in response to a request from the SunCoast Linux Users Group (SLUG) mail list a week or so ago.

    Ed.

    http://web.tampabay.rr.com/ecentan1/xplat/crossc om pile.html

  9. Re:Surely a security risk by Twirlip+of+the+Mists · · Score: 3, Informative
    I'm on a crusade. I intend to post a comment like this one whenever I see anybody use "virii." Please don't interpret this comment as either endorsement of or disagreement with the parent post. Moderators: with your help, we can wipe out "virii" in our lifetime!

    The plural of "virus" isn't "virii." There is no such word. The plural of "virus" is "viruses."

    Here's a good explanation from cdknow.com, quoted here in its entirety because the people who most need to read this won't click on a link.

    The correct English plural of virus is viruses. Please consult any good dictionary before making up words.

    For the purists, in Latin, there is a rarely-used plural form:

    virus, viri (neuter)

    (Forms: almost always restricted to nominative and accusative singular; generally singular in Lucretius, ablative singular in Lucretius)

    The point of this is that even in Latin the form "viri" is rarely used. The singular form is used in most every instance. (This is from the Oxford Latin Dictionary.)

    So, when considering the Latin: "virii" is incorrect and "viri" was almost never used.

    Despite the fact there was little use for the plural form, there is another reason why "viri" was rarely used. The most common Latin word for "man" is "vir" with "viri" being its plural in the form used as the subject of a sentence. Thus, since "men" as the subject of a sentence would be used far more often than "venoms" (virus means venom) the "viri" word was most commonly seen as the plural of "man."

    Bottom line: Don't try to make up words using a false Latin plural form. Since the word virus in its English form is now used then the English plural (viruses) should be used.

    More plural-of-virus resources:

    perl.com, the canonical and exhaustive source
    The alt.comp.virus FAQ
    Jonathan de Boyne Pollard's Frequently Given Answer
    Merriam-Webster's "Word for the Wise," January 20, 2000.

    --

    I write in my journal
  10. Automated builds + a full-featured dev environment by danlyke · · Score: 2, Informative

    Beyond just automated builds, my big issue with VisualStudio is that it sucks boulders through capillary tubes if you ever have to change compilation options on more than one build target, or add a bunch of "only slightly different" items to a build. Besides the fact that it's often bloody impossible to figure out where it's setting a given compiler option.

    And when I've used the VC command line tools and called up Microsoft to report bugs I've gotten laughter, at best. They simply won't support anything but the visual environment.

    This gives a full-featured development environment using real production quality tools in an environment that won't be blowing chunks every time I try to do something remotely outlandish with the USB bus. I've no problem with having a Windows box beside my Linux box for running the app, I just want a stable, full-featured development environment. Linux cross-compiling onto a Samba mount is closer to that than Microsoft's been in many years.

  11. Re:Canadian Cross-Compiler? by The+Lord+of+Chaos · · Score: 2, Informative

    Canadian Cross is when you are building a cross compiler to be hosted on a different platform than you are building it on.

    Example:
    Using a Linux-x86 system to build a windows hosted powerPC compiler.

    "Canadian" refers to there being three different platforms (parties*) involved: the target platform (powerPC), the hosting platform (windows), and the platform building the cross-compiler (Linux).

    * There used to be three national political parties in Canada before those pesky Quebecois formed a national party.