I looked into this error further & it appears this issue can occur when
using cstdio w/ icc when targeting 64-bit platforms.
Due to a cascade of macro issues fgetpos64, fopen64, etc are never
mapped to the standard names "fgetpos", "fopen", etc.
Here is a file someone created to get around the issue:
I was able to use this file & hack my way though a build.
I changed various files in src/wrapper and in bpl_subset/lib/python to
include this file before any boost includes.
(This is clearly not a good general solution, but I wanted to see if
anything was lurking beyond this issue)
Everything seemed to go well & the module installed, however something
is wrong with the final install (for example: the main __init__.py
exists, but is empty)
Getting closer - I should have time to pick this up again next week.
Thanks again for all of your help so far,
On 01/31/12 18:40, Andreas Kloeckner wrote:
On Tue, 31 Jan 2012 12:08:42 -0800, Cyrus
> Hi Andreas,
> I found another missing file:
> catastrophic error: could not open source file
> # include<boost/preprocessor/slot/counter.hpp>
> I added it + the "detail" subfolder& I made it a bit further.
If you mean boost/preprocessor/slot/detail, that was already there for
> Now I am stuck here:
> icc -pthread -m64 -fPIC -O3 -DNDEBUG (...) -c
> src/wrapper/wrap_mempool.cpp -o
> /usr/include/c++/4.1.2/cstdio(109): error: the global scope has no
> using ::fgetpos;
> /usr/include/c++/4.1.2/cstdio(111): error: the global scope has no "fopen"
> using ::fopen;
> /usr/include/c++/4.1.2/cstdio(116): error: the global scope has no
> using ::freopen;
> /usr/include/c++/4.1.2/cstdio(119): error: the global scope has no
> using ::fsetpos;
> /usr/include/c++/4.1.2/cstdio(138): error: the global scope has no
> using ::tmpfile;
Can you compile just a regular C++ file using<cstdio>? What's the
include path leading there? (If it's from pyopencl, we might be able to
simply switch to the<stdio.h> C form.)