From: Patrick M. <pat...@gm...> - 2010-08-22 23:13:11
Attachments:
build.txt
|
Greetings, I'm currently trying to build a grib reader on Windows7 using mingw. I get a failure in the build process with an Undefined reference to "_lstat" and "_S_ISLNK" I've attached the build log, and included inline the error. Any help would be appreciated. Patrick ========================================================================= grib_tools.c: In function `process': grib_tools.c:497: warning: implicit declaration of function `lstat' grib_tools.c:503: warning: implicit declaration of function `S_ISLNK' grib_options.c:1: warning: -fPIC ignored for target (all code is position independent) grib_keys.c:1: warning: -fPIC ignored for target (all code is position independent) libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x11c): undefined reference to `_lstat' libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x164): undefined reference to `_S_ISLNK' collect2: ld returned 1 exit status make[1]: *** [grib_keys.exe] Error 1 make: *** [all-recursive] Error 1 ========================================================================= --- Patrick Marsh Ph.D. Student / Liaison to the HWT School of Meteorology / University of Oklahoma Cooperative Institute for Mesoscale Meteorological Studies National Severe Storms Laboratory http://www.patricktmarsh.com |
From: LRN <lr...@gm...> - 2010-08-23 06:27:00
|
On 23.08.2010 8:40, JonY wrote: > On 8/23/2010 11:11, Patrick Marsh wrote: >> Thanks for the suggestions, Jon! >> >> Changing lstat to stat seemed to work, however defining S_ISLNK to be >> 0 didn't. I shouldn't be surprised. Thanks for the suggestion, >> though! >> > Hi, > > you can remove S_ISLNK entirely as well, since Windows doesn't have that > sort of Unix symlinks. > Not true. Since WINVER 6 (Vista) symlinks are available, and they are compatible with *nix symlinks (to some extent; see Wikipedia for details). API, however, does not match the *nix API for symlinks - no lstat(), symlink(), readlink(), link(), S_ISSLNK; and other CRT functions might not work with symlinks the way they do on POSIX-compilant systems. But that doesn't stop you from implementing such interface on top of WinAPI functions for symlinks and hardlinks. I did that (google for libntlink), and other people did too (Python 3.2 will have symlink support on Windows >= 6; Far Manager supports all kind of links, etc). |
From: JonY <jo...@us...> - 2010-08-23 07:16:43
|
On 8/23/2010 14:26, LRN wrote: > On 23.08.2010 8:40, JonY wrote: >> On 8/23/2010 11:11, Patrick Marsh wrote: >>> Thanks for the suggestions, Jon! >>> >>> Changing lstat to stat seemed to work, however defining S_ISLNK to be >>> 0 didn't. I shouldn't be surprised. Thanks for the suggestion, >>> though! >>> >> Hi, >> >> you can remove S_ISLNK entirely as well, since Windows doesn't have that >> sort of Unix symlinks. >> > Not true. Since WINVER 6 (Vista) symlinks are available, and they are > compatible with *nix symlinks (to some extent; see Wikipedia for > details). API, however, does not match the *nix API for symlinks - no > lstat(), symlink(), readlink(), link(), S_ISSLNK; and other CRT > functions might not work with symlinks the way they do on > POSIX-compilant systems. But that doesn't stop you from implementing > such interface on top of WinAPI functions for symlinks and hardlinks. I > did that (google for libntlink), and other people did too (Python 3.2 > will have symlink support on Windows>= 6; Far Manager supports all kind > of links, etc). Hi, Vista/7 does have symlinks, but as I have said, they're not entirely similar to Unix where lstat/stat should be concerned. Then again, it depends on what your app is trying to do, removing the symlink check entirely is a lazy way to do porting you don't care about it. |
From: Keith M. <kei...@us...> - 2010-08-24 06:51:06
|
On Monday 23 August 2010 07:26:49 LRN wrote: > > you can remove S_ISLNK entirely as well, since Windows doesn't have > > that sort of Unix symlinks. > > Not true. Effectively, it *is* true, if you wish your code to remain usable under WinXP or earlier... > Since WINVER 6 (Vista) symlinks are available, and they are > compatible with *nix symlinks (to some extent; ... And, *some* is very much the operative word here; (I might be inclined to qualify it with "limited"). Even if you do have Vista or later... > see Wikipedia for details). API, however, does not match the *nix API > for symlinks - no lstat(), symlink(), readlink(), link(), S_ISSLNK; > and other CRT functions might not work with symlinks the way they do > on POSIX-compilant systems. But that doesn't stop you from > implementing such interface on top of WinAPI functions > for symlinks and hardlinks. ... the API is very different from that of POSIX, so an application written for a POSIX system will require (possibly significant) porting effort. Even then, you may find that Vista and Win7 users *still* do not have symlinks -- the system may allegedly support them, but if the user does not have administrative rights on the host, and those who have the responsibility for configuring policy on that host decline to enable symlink creation rights for all users, then the symlink capability may *not* be available. -- Regards, Keith. |
From: Peter R. <p.r...@sh...> - 2010-08-23 10:51:41
|
On 23/08/10 01:13, JonY wrote: > On 8/23/2010 07:12, Patrick Marsh wrote: >> Greetings, >> >> I'm currently trying to build a grib reader on Windows7 using mingw. >> I get a failure in the build process with an >> >> Undefined reference to "_lstat" and "_S_ISLNK" Excuse the apostasy, but you could build this on Cygwin if it needs *nix things and it's going to be time-consuming to port properly? >> I've attached the build log, and included inline the error. Any help >> would be appreciated. >> >> Patrick >> >> >> ========================================================================= >> grib_tools.c: In function `process': >> grib_tools.c:497: warning: implicit declaration of function `lstat' >> grib_tools.c:503: warning: implicit declaration of function `S_ISLNK' >> grib_options.c:1: warning: -fPIC ignored for target (all code is >> position independent) >> grib_keys.c:1: warning: -fPIC ignored for target (all code is position >> independent) >> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x11c): undefined >> reference to `_lstat' >> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x164): undefined >> reference to `_S_ISLNK' >> collect2: ld returned 1 exit status >> make[1]: *** [grib_keys.exe] Error 1 >> make: *** [all-recursive] Error 1 >> ========================================================================= > Hi, > > I see that you are trying to use code designed for UNIX. Windows MSVCRT > doesn't have _lstat or _S_ISLNK. > > You could use stat for lstat and "#define _S_ISLNK(X) 0" to work around > the code. > > Your success rates may vary. > > See the following for more info: > S_ISLNK http://www.freepascal.org/docs-html/rtl/oldlinux/s_islnk.html > lstat http://www.opengroup.org/onlinepubs/009695399/functions/lstat.html > _stat http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.80%29.aspx > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > MinGW-users mailing list > Min...@li... > > This list observes the Etiquette found at > http://www.mingw.org/Mailing_Lists. > We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated. > > _______________________________________________ > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users |
From: JonY <jo...@us...> - 2010-08-23 00:31:31
|
On 8/23/2010 07:12, Patrick Marsh wrote: > Greetings, > > I'm currently trying to build a grib reader on Windows7 using mingw. > I get a failure in the build process with an > > Undefined reference to "_lstat" and "_S_ISLNK" > > I've attached the build log, and included inline the error. Any help > would be appreciated. > > Patrick > > > ========================================================================= > grib_tools.c: In function `process': > grib_tools.c:497: warning: implicit declaration of function `lstat' > grib_tools.c:503: warning: implicit declaration of function `S_ISLNK' > grib_options.c:1: warning: -fPIC ignored for target (all code is > position independent) > grib_keys.c:1: warning: -fPIC ignored for target (all code is position > independent) > libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x11c): undefined > reference to `_lstat' > libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x164): undefined > reference to `_S_ISLNK' > collect2: ld returned 1 exit status > make[1]: *** [grib_keys.exe] Error 1 > make: *** [all-recursive] Error 1 > ========================================================================= Hi, I see that you are trying to use code designed for UNIX. Windows MSVCRT doesn't have _lstat or _S_ISLNK. You could use stat for lstat and "#define _S_ISLNK(X) 0" to work around the code. Your success rates may vary. See the following for more info: S_ISLNK http://www.freepascal.org/docs-html/rtl/oldlinux/s_islnk.html lstat http://www.opengroup.org/onlinepubs/009695399/functions/lstat.html _stat http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.80%29.aspx |
From: Patrick M. <pat...@gm...> - 2010-08-23 03:12:09
|
Thanks for the suggestions, Jon! Changing lstat to stat seemed to work, however defining S_ISLNK to be 0 didn't. I shouldn't be surprised. Thanks for the suggestion, though! Patrick --- Patrick Marsh Ph.D. Student / Liaison to the HWT School of Meteorology / University of Oklahoma Cooperative Institute for Mesoscale Meteorological Studies National Severe Storms Laboratory http://www.patricktmarsh.com On Sun, Aug 22, 2010 at 7:13 PM, JonY <jo...@us...> wrote: > On 8/23/2010 07:12, Patrick Marsh wrote: >> >> Greetings, >> >> I'm currently trying to build a grib reader on Windows7 using mingw. >> I get a failure in the build process with an >> >> Undefined reference to "_lstat" and "_S_ISLNK" >> >> I've attached the build log, and included inline the error. Any help >> would be appreciated. >> >> Patrick >> >> >> ========================================================================= >> grib_tools.c: In function `process': >> grib_tools.c:497: warning: implicit declaration of function `lstat' >> grib_tools.c:503: warning: implicit declaration of function `S_ISLNK' >> grib_options.c:1: warning: -fPIC ignored for target (all code is >> position independent) >> grib_keys.c:1: warning: -fPIC ignored for target (all code is position >> independent) >> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x11c): undefined >> reference to `_lstat' >> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x164): undefined >> reference to `_S_ISLNK' >> collect2: ld returned 1 exit status >> make[1]: *** [grib_keys.exe] Error 1 >> make: *** [all-recursive] Error 1 >> ========================================================================= > > Hi, > > I see that you are trying to use code designed for UNIX. Windows MSVCRT > doesn't have _lstat or _S_ISLNK. > > You could use stat for lstat and "#define _S_ISLNK(X) 0" to work around the > code. > > Your success rates may vary. > > See the following for more info: > S_ISLNK http://www.freepascal.org/docs-html/rtl/oldlinux/s_islnk.html > lstat http://www.opengroup.org/onlinepubs/009695399/functions/lstat.html > _stat http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.80%29.aspx > |
From: JonY <jo...@us...> - 2010-08-23 04:57:57
|
On 8/23/2010 11:11, Patrick Marsh wrote: > Thanks for the suggestions, Jon! > > Changing lstat to stat seemed to work, however defining S_ISLNK to be > 0 didn't. I shouldn't be surprised. Thanks for the suggestion, > though! > Hi, you can remove S_ISLNK entirely as well, since Windows doesn't have that sort of Unix symlinks. |
From: Patrick M. <pat...@gm...> - 2010-08-23 13:33:19
|
On Mon, Aug 23, 2010 at 5:51 AM, Peter Rockett <p.r...@sh...> wrote: > > > On 23/08/10 01:13, JonY wrote: >> On 8/23/2010 07:12, Patrick Marsh wrote: >>> Greetings, >>> >>> I'm currently trying to build a grib reader on Windows7 using mingw. >>> I get a failure in the build process with an >>> >>> Undefined reference to "_lstat" and "_S_ISLNK" > > Excuse the apostasy, but you could build this on Cygwin if it needs *nix > things and it's going to be time-consuming to port properly? Let me give a little more background on what I'm (foolishly?) attempting. I am trying to build a Python grib reader which depends on this *nix grib reader for the underlying I/O. This is why I'm trying to build/port the *nix code to MinGW/MSYS. I was able to build the binaries by removing the single reference to _S_ISLNK (it was within a complex if statement) and changing lstat to stat. However, when I did this, the binaries failed miserably when running "make check". Just for fun, I went ahead and installed the "bad" binaries and then built the Python module (which is essentially a wrapper to the underlying *nix grib binaries) and it built with no problems. However, when running the Python module, it failed as expected. I'm certainly not an expert (but I'm not a beginner) when it comes to understanding the intricacies of building using MinGW/MSYS. However, I am wanting to learn. > >>> I've attached the build log, and included inline the error. Any help >>> would be appreciated. >>> >>> Patrick >>> >>> >>> ========================================================================= >>> grib_tools.c: In function `process': >>> grib_tools.c:497: warning: implicit declaration of function `lstat' >>> grib_tools.c:503: warning: implicit declaration of function `S_ISLNK' >>> grib_options.c:1: warning: -fPIC ignored for target (all code is >>> position independent) >>> grib_keys.c:1: warning: -fPIC ignored for target (all code is position >>> independent) >>> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x11c): undefined >>> reference to `_lstat' >>> libgrib_tools.a(grib_tools.o):grib_tools.c:(.text+0x164): undefined >>> reference to `_S_ISLNK' >>> collect2: ld returned 1 exit status >>> make[1]: *** [grib_keys.exe] Error 1 >>> make: *** [all-recursive] Error 1 >>> ========================================================================= >> Hi, >> >> I see that you are trying to use code designed for UNIX. Windows MSVCRT >> doesn't have _lstat or _S_ISLNK. >> >> You could use stat for lstat and "#define _S_ISLNK(X) 0" to work around >> the code. >> >> Your success rates may vary. >> >> See the following for more info: >> S_ISLNK http://www.freepascal.org/docs-html/rtl/oldlinux/s_islnk.html >> lstat http://www.opengroup.org/onlinepubs/009695399/functions/lstat.html >> _stat http://msdn.microsoft.com/en-us/library/14h5k7ff%28VS.80%29.aspx >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by >> >> Make an app they can't live without >> Enter the BlackBerry Developer Challenge >> http://p.sf.net/sfu/RIM-dev2dev >> _______________________________________________ >> MinGW-users mailing list >> Min...@li... >> >> This list observes the Etiquette found at >> http://www.mingw.org/Mailing_Lists. >> We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated. >> >> _______________________________________________ >> You may change your MinGW Account Options or unsubscribe at: >> https://lists.sourceforge.net/lists/listinfo/mingw-users > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by > > Make an app they can't live without > Enter the BlackBerry Developer Challenge > http://p.sf.net/sfu/RIM-dev2dev > _______________________________________________ > MinGW-users mailing list > Min...@li... > > This list observes the Etiquette found at > http://www.mingw.org/Mailing_Lists. > We ask that you be polite and do the same. Disregard for the list etiquette may cause your account to be moderated. > > _______________________________________________ > You may change your MinGW Account Options or unsubscribe at: > https://lists.sourceforge.net/lists/listinfo/mingw-users > |
From: Norman V. <nh...@ca...> - 2010-08-23 14:00:38
|
On Aug 23, 2010, at 9:32 AM, Patrick Marsh wrote: > On Mon, Aug 23, 2010 at 5:51 AM, Peter Rockett > <p.r...@sh...> wrote: >> >> >> On 23/08/10 01:13, JonY wrote: >>> On 8/23/2010 07:12, Patrick Marsh wrote: >>>> Greetings, >>>> >>>> I'm currently trying to build a grib reader on Windows7 using mingw. >>>> I get a failure in the build process with an >>>> >>>> Undefined reference to "_lstat" and "_S_ISLNK" >> >> Excuse the apostasy, but you could build this on Cygwin if it needs *nix >> things and it's going to be time-consuming to port properly? > > > > Let me give a little more background on what I'm (foolishly?) > attempting. I am trying to build a Python grib reader which depends > on this *nix grib reader for the underlying I/O. This is why I'm > trying to build/port the *nix code to MinGW/MSYS. Patrick If what you are after is a Python module to read Grib files under windows perhaps you could try using a recent GDAL http://www.gdal.org here is the grib support page http://www.gdal.org/frmt_grib.html Cheers Norman |
From: Earnie <ea...@us...> - 2010-08-23 15:28:36
|
Patrick Marsh wrote: > On Mon, Aug 23, 2010 at 5:51 AM, Peter Rockett > <p.r...@sh...> wrote: >> >> >> On 23/08/10 01:13, JonY wrote: >>> On 8/23/2010 07:12, Patrick Marsh wrote: >>>> Greetings, >>>> >>>> I'm currently trying to build a grib reader on Windows7 using mingw. >>>> I get a failure in the build process with an >>>> >>>> Undefined reference to "_lstat" and "_S_ISLNK" >> >> Excuse the apostasy, but you could build this on Cygwin if it needs *nix >> things and it's going to be time-consuming to port properly? > > > > Let me give a little more background on what I'm (foolishly?) > attempting. I am trying to build a Python grib reader which depends > on this *nix grib reader for the underlying I/O. This is why I'm > trying to build/port the *nix code to MinGW/MSYS. > That is all fine a dandy. > I was able to build the binaries by removing the single reference to > _S_ISLNK (it was within a complex if statement) and changing lstat to > stat. However, when I did this, the binaries failed miserably when > running "make check". Just for fun, I went ahead and installed the > "bad" binaries and then built the Python module (which is essentially > a wrapper to the underlying *nix grib binaries) and it built with no > problems. However, when running the Python module, it failed as > expected. > The information from lstat represents data from the symlink while the information from stat is about a file. The two are different. If the programming is doing something with the information from lstat you cannot simply replace it with stat. The ``make check'' tests are often non-functioning on windows due to the static file have \n line endings versus the \r\n produced by windows. You have to look at each failed test to determine the cause of the failure. Also you may need to ensure that your handles are open in binary mode to get the correct results from the library. > I'm certainly not an expert (but I'm not a beginner) when it comes to > understanding the intricacies of building using MinGW/MSYS. However, > I am wanting to learn. We are always learning. Even those that call themselves experts can learn something new. :) --8<-- trimmed unnecessary quoting -->8-- -- Earnie -- http://www.for-my-kids.com |