NWJS compiling binary for different OS and different arch - node.js

I need help in compiling binary files from MacOS to Windows32 & Windows64 bit. In documentation it is written that we need to compile binary according to platform but actual options/parameters are not provided in documentation for it
Got the parameters from nwjc --help section, tried with following but nothing works:
nwjc --target-os win32 --target-arch ia32 nwapp/main.js nwapp/main.bin
nwjc --target-os win32 --target-arch x86_64 nwapp/main.js nwapp/main.bin
nwjc --target-os win32 --target-arch x64 nwapp/main.js nwapp/main.bin
By default, the binary compiled on MacOS is running on 64 bit windows without any target parameters.
Can you give me the parameters and possible values for compiling for Windows32 & Windows 64 from MacOS?

I have got the answer from nwjs gitter group. The answer is:
If you want to compile JS files to v8 binary files for a target
platform, let's suppose Windows 32 bit, then you need to compile them
on the target platform only. You cannot compile binaries for Windows
32 from a different OS (in my case I was trying with MacOS)

Related

How to build the 32-bit GRPC binaries from sources with CMAKE on Linux (CentOS 7)?

Does anyone know how to build the 32-bit GRPC binaries from sources with CMAKE on Linux (CentOS 7)? Which specific flags must be set to what specific values and passed to CMAKE in which specific way?
We know how to build the 64-bit GRPC binaries from sources with CMAKE on Linux but we also need its 32-bit version. I would imagine that there has to be a way to turn off the default 64-bit build and turn on the 32-bit build instead.
Thank you.

Does a 32-bit Linux program's entire runtime lib tree need to be 32-bit?

On my 64-bit RHEL machine, I'm compiling and running a C & Fortran program that is 32-bit only. It invokes the non-static version of a lot of standard Linux libs (X11, OpenGL/Mesa, Motif, etc...), which of course invoke other libs (libjpeg, libc, etc). Do I have to install the 32-bit versions of that entire devl lib tree in order to build this program validly? And do I have to install the 32-bit versions of that entire run-time lib tree in order to run it without it segfaulting or whatever?
As far as i know you can't use 64 bit versions of your libs to run 32 bit software. So yes you need the 32 bit versions.

compiling application with gcc -m32 on 64-bit system

I try to understand the requirements for developing Linux application running on 64-bit OS (with 64-bit architecture).
If the code was written for 32-bits architecture, does it mean that on regular compilation (gcc -m32) it will run on the 64-bit system OS, without any problems ?
Thank you,
Ran
Yes, it will. The only caveats to this are that you need 32 bit libraries to run the program, and 32 bit development packages to compile it. Most distros provide these and make it simple to install them as well.

Cross compile nodejs modules to Windows with node-gyp

Due to some compiler problems on my Windows 7 x64 machine, I have to compile all my code on my Linux ARM box. How can I cross compile node modules with node gyp? Thanks in advance.
There are two problems here. First, you have to get cross-compiling set up to go from your ARM box to Windows.
This should help: http://wiki.wxwidgets.org/Cross-Compiling_Under_Linux
Then (assuming your compilers and linker are set up: CXX, etc.), you just need to specify the architecture when running node-gyp:
node-gyp --arch x64 rebuild
That should do it.

unable to run a binary in mac,running on Linux

I am using a software for graph mining.
I have got the binary of that software in 2 folders for Linux mode and SunOs mode but don't have the source.
I am able to run the binary in Linux machine.
But when I want to run the binary in a Mac machine I am getting "command not found" for both the Linux and SunOs folders' binaries.
Could someone suggest if it can be able to run this in a MAC machine by any means like using a Linux shell or something
Gaurav
EDIT:I am getting "cannot execute binary" error when I set chmod to "u+x"
You'll need to recompile it for OS X or use a VM.
A command not found just means you're not executing it right, make sure it's chmod u+x and it's either on your PATH, or you specify the path explicitly.
If you use the file command you will see the difference, on the linux executable you'll have something like:
ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically
linked, for GNU/Linux 2.6.15, not stripped
and something like this for OS X executables:
command: Mach-O universal binary with 2 architectures command (for
architecture x86_64): Mach-O 64-bit executable x86_64 command (for
architecture i386): Mach-O executable i386
Operating systems generally don't support executing object code any extra formats... If Mac osx decended from solaris or Linux, then there could be some incentive for legacy support. But just assume everything to be binarily incomparable if it was compiled for a different arch and platform. There are a few places where you inherit backwards compatibility, running 32 but code on 64 bit oses... Or ppc code support on intel macs, but I suspect that both of those, especially the latter were non trivial engineering tasks.
Here are your options...
Get the source and compile on the Mac, if it compiles on Linux and solaris good chance it will compile and run ok on Mac.
Run through an emulator or boot camp

Resources