How to compiler dlang code on Apple M1?

Steven Schveighoffer schveiguy at gmail.com
Tue Dec 13 15:20:32 UTC 2022


On 12/13/22 9:35 AM, zoujiaqing wrote:
> On Saturday, 3 December 2022 at 20:33:59 UTC, Steven Schveighoffer wrote:
>>
>> The issue is dub. Make sure you are using the dub built for ARM.
>>
>> What Apple does is if any program in the same process group is x86 
>> specific, then all the executed programs that are universal (including 
>> the linker) will switch to that mode.
>>
>> The linker thinks you are building on x86, even though the compiler is 
>> doing ARM64. I ran into this early on too. Switching to the dub that 
>> ships with ldc built for ARM solved it!
>>
>> -Steve
> 
> 
> ```[zoujiaqing at mac server % ~/Programs/ldc/bin/dub run --compiler=ldc2 
> --arch=arm64-apple-macos
> Performing "debug" build using ldc2 for aarch64, arm_hardfloat.
> taggedalgebraic 0.11.22: target for configuration "library" is up to date.
> eventcore 0.9.20+commit.4.g6744ae7: target for configuration "cfrunloop" 
> is up to date.
> server ~master: building configuration "application"...
> Linking...
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: alignment (1) of atom 'anon' is too small and may result in 
> unaligned pointers
> ld: warning: pointer not aligned at address 0x100334231 ('anon' + 561 
> from 
> .dub/build/application-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-FA51B7352B8B88D87B3B8911362A8A52/server.o)
> ld: warning: pointer not aligned at address 0x1003350DB ('anon' + 2025 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.driver.o))
> ld: warning: pointer not aligned at address 0x1003398EB ('anon' + 1759 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.driver.o))
> ld: warning: pointer not aligned at address 0x10033B426 ('anon' + 696 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.events.o))
> ld: warning: pointer not aligned at address 0x10033C2A1 ('anon' + 618 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.kqueue.o))
> ld: warning: pointer not aligned at address 0x10033C942 ('anon' + 1186 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.pipes.o))
> ld: warning: pointer not aligned at address 0x10033EE5E ('anon' + 1258 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.processes.o))
> ld: warning: pointer not aligned at address 0x100342E2A ('anon' + 872 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.sockets.o))
> ld: warning: pointer not aligned at address 0x1003479E2 ('anon' + 630 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.posix.watchers.o))
> ld: warning: pointer not aligned at address 0x100349562 ('anon' + 1437 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.threadedfile.o))
> ld: warning: pointer not aligned at address 0x10034B9F2 ('anon' + 1597 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.drivers.timer.o))
> ld: warning: pointer not aligned at address 0x10034D833 ('anon' + 372 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.internal.consumablequeue.o))
> ld: warning: pointer not aligned at address 0x10034E57E ('anon' + 244 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.internal.dlist.o))
> ld: warning: pointer not aligned at address 0x10034EC95 ('anon' + 1228 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.internal.ioworker.o))
> ld: warning: pointer not aligned at address 0x100351681 ('anon' + 4868 
> from 
> ../../eventcore/.dub/build/cfrunloop-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-18F6DB0DFA53563841F49715E25DF4FC/libeventcore.a(eventcore.internal.utils.o))
> ld: warning: pointer not aligned at address 0x10036F251 ('anon' + 270 
> from 
> ../../../.dub/packages/taggedalgebraic-0.11.22/taggedalgebraic/.dub/build/library-debug-posix.osx.darwin-aarch64.arm_hardfloat-ldc_v1.30.0-2F44BAD74994DE04344CC9119014729D/libtaggedalgebraic.a(taggedalgebraic.o))
> ld: unaligned pointer(s) for architecture arm64
> clang: error: linker command failed with exit code 1 (use -v to see 
> invocation)
> Error: /usr/bin/cc failed with status: 1
> ldc2 failed with exit code 1.
> ```
> 
> So hard ..

Yeah, that's a known issue: 
https://github.com/ldc-developers/ldc/issues/3864

Try building with `-b plain` to avoid the debug build

-Steve


More information about the Digitalmars-d-learn mailing list