Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <425DEB18.30EB1127@dessent.net> Date: Wed, 13 Apr 2005 21:01:28 -0700 From: Brian Dessent Organization: My own little world... MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: Distributing a program References: <000c01c540a3$745fa7c0$0100000a AT rocklobster> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Reply-To: cygwin AT cygwin DOT com Ross Crawford wrote: > > I'm pretty new to Cygwin, and I've created a program (using gcc) that I want > to distribute to people who may not have Cygwin installed. What files do I > need to provide so they can run the program? That's a complicated question. The best way to do it is to just tell them to install cygwin with setup.exe and then install your program. But, for lots of reasons, that's not always realistic to expect. You can get a basic idea of which DLLs your program requires by just doing "cygcheck yourapp.exe". But, depending on which library functions you call, you may need other files, such as timezone (/usr/share/zoneinfo/*) or termcap (/usr/share/terminfo/*) files. This will be a problem even if you distribute those files, because on a system that does not have Cygwin installed, there will be no mounts, and so the program will have no idea where "/usr/share" is supposed to be. If you find this to be the case you will have to check for mounts in your installer and if there are none, add them such that the required files can be found. But for heaven's sake don't go trashing existing mounts, if the user already has Cygwin installed. Then there's the problem of including a cygwin1.dll with your program. If the user already has Cygwin installed, or has some other binary that has Cygwin1.dll included with it, you're going to likely cause something to break by adding yet another cygwin1.dll to the mix. There should only ever be one single cygwin1.dll in the PATH search list, otherwise stuff starts breaking. You should at the least check the PATH for copies of Cygwin1.dll during your install, and if found check the version. If the version on disk is newer than yours, do not install your copy. If it's an older version, delete it and install your newer version in its place. You will probably have to inform the user about this and offer them the choice to override whatever you choose. Finally there is the licensing thing. If you link to cygwin1.dll you must license your program under the GPL or other OSI approved license. So you'll need to make sure that the source to your app AS WELL AS the source to cygwin1.dll (and any other GPL libraries that your program is linked to) is available to anyone you give your binary to. It's not sufficient to tell them that they can get the source from cygwin.com, you must provide it yourself on your own site or by other means. Brian -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/