Is it possible to define the root directory in a cross compiled program

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Tue Jan 5 03:17:55 GMT 2021


On 2021-01-04 18:34, Roger Kaufman wrote:
> When I cross compile the following program, opening /dev/null fails and instead 
> the whole install path of /cygwin64/dev/null is visible.
> 
> Is there a way to make fopen respect / as the root directory in a cross compiled 
> program for windows?
> 
> example output...
> 
> Roger@interocitor:~
> $ x86_64-w64-mingw32-g++ -o writenull.exe write2null.cc
> 
> Roger@interocitor:~
> $ writenull.exe
> /dev/null did not succeed
> 
> Roger@interocitor:~
> $ gcc -o writenull write2null.cc
> 
> Roger@interocitor:~
> $ writenull
> /cygwin64/dev/null did not succeed
> 
> C Code that was compiled...
> 
> #include <cstdio>
> 
> int main(int argc, char **argv)
> {
>    FILE *errfile1 = fopen("/dev/null", "w");
>    if (!errfile1) // must be a valid pointer
>      errfile1 = stderr;
> 
>    FILE *errfile2 = fopen("/cygwin64/dev/null", "w");
>    if (!errfile2) // must be a valid pointer
>      errfile2 = stderr;
> 
>    fprintf(errfile1, "/dev/null did not succeed\n");
>    fprintf(errfile2, "/cygwin64/dev/null did not succeed\n");
> 
>    return 0;
> }

It's a Windows program - it can do whatever you program it to do!
On Windows the device is NUL, the root is the drive root C:\,
and anything else depends on the Windows subsystem.

To do otherwise you have to program it to emulate the Cygwin emulation,
or build it as a Cygwin program using the Cygwin toolchain.

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in binary units and prefixes, physical quantities in SI.]


More information about the Cygwin mailing list