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

Andrey Repin anrdaemon@yandex.ru
Tue Jan 5 21:04:52 GMT 2021


Greetings, Brian Inglis!

> 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:\,

%SystemDrive%\ to be precise. Even though it IS C:\ in majority of cases, it
is not necessarily true all the time.

> 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.



-- 
With best regards,
Andrey Repin
Wednesday, January 6, 2021 0:03:57

Sorry for my terrible english...


More information about the Cygwin mailing list