Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wrong architecture linker warnings on ARM64 macOS #632

Closed
rotu opened this issue Jun 18, 2024 · 1 comment · Fixed by #622
Closed

Wrong architecture linker warnings on ARM64 macOS #632

rotu opened this issue Jun 18, 2024 · 1 comment · Fixed by #622
Labels

Comments

@rotu
Copy link
Contributor

rotu commented Jun 18, 2024

On macOS, I get the following linker warnings upon pnpm install. I suspect this is because of incorrectly defaulting arch in https://github.com/rotu/zeromq.js/blob/2f13ee2f9654f5dc56a36910eddd2a1054e0b338/binding.gyp#L230-L235

My computer is an M1 MacBook Air.

ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[103](stream_listener_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[102](stream_connecter_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[101](zmtp_engine.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[100](zap_client.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[99](ip_resolver.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[98](gather.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[97](scatter.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[96](udp_address.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[95](udp_engine.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[94](dish.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[93](radio.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[92](timers.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[91](socket_poller.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[90](decoder_allocators.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[89](zmq_utils.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[88](zmq.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[87](xsub.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[86](xpub.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[85](v3_1_encoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[84](v2_encoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[83](v2_decoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[82](v1_encoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[81](v1_decoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[80](radix_tree.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[79](trie.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[78](thread.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[77](tcp_listener.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[76](tcp_connecter.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[75](tcp_address.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[74](tcp.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[73](sub.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[72](stream_engine_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[71](stream.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[70](socks_connecter.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[69](socks.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[68](socket_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[67](signaler.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[66](session_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[65](server.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[64](select.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[63](router.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[62](req.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[61](rep.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[60](reaper.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[59](raw_engine.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[58](raw_decoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[57](raw_encoder.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[56](random.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[55](push.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[54](pull.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[53](pub.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[52](proxy.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[51](pollset.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[50](polling_util.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[49](poller_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[48](poll.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[47](plain_server.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[46](plain_client.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[45](pipe.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[44](pgm_socket.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[43](pgm_sender.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[42](pgm_receiver.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[41](peer.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[40](pair.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[39](null_mechanism.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[38](own.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[37](options.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[36](object.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[35](norm_engine.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[34](mtrie.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[33](msg.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[32](metadata.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[31](mechanism_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[30](mechanism.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[29](mailbox_safe.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[28](mailbox.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[27](lb.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[26](kqueue.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[25](ipc_listener.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[24](ipc_connecter.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[23](ipc_address.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[22](ip.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[21](io_thread.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[20](io_object.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[19](fq.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[18](err.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[17](epoll.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[16](endpoint.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[15](dist.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[14](dgram.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[13](devpoll.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[12](dealer.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[11](curve_server.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[10](curve_client.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[9](curve_mechanism_base.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[8](ctx.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[7](clock.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[6](client.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[5](channel.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[4](address.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[3](precompiled.cpp.o)': found architecture 'arm64', required architecture 'x86_64'
ld: warning: ignoring file '/Users/dan/Source/zeromq.js/build/libzmq/lib/libzmq.a[2](sha1.c.o)': found architecture 'arm64', required architecture 'x86_64'
rm 7722eaf02fcc073df28ffd1fa831e71544edfd42.intermediate

out.txt

@aminya
Copy link
Member

aminya commented Jun 18, 2024

When ARCH is defined (e.g. in the CI), we can cross-compile using the ARCH flag. However, the default is set to x84_64, which is not a good default on the ARM machines. We should find a way to pass flags to the compiler instead of setting the default to a fixed architecture.

Perhaps, this would do it?

                'OTHER_CFLAGS': [
                  "<!(echo \"${CC_FLAGS}\")",
                ],
                'OTHER_LDFLAGS': [
                  "<!(echo \"${LD_FLAGS}\")",
                ],

The build.ts script and CI should be modified to support this.

Alternatively, we can just remove these flags because we now have access to native Arm machines in Github Actions, and we no longer need to cross compile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants