www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.ldc - Undefined symbols for architecture arm64

reply Kenneth Wolcott <kennethwolcott gmail.com> writes:
Hi;

       I have copied D source code from Rosetta Code as a test on 
my MacOS M1 machine.

https://rosettacode.org/wiki/Power_set#D (second version)

     cat -n ./power_set.d
          1	// An alternative version, which implements the range 
construct from
          2	// scratch:
          3
          4	import std.range;
          5
          6	struct PowerSet(R)
          7		if (isRandomAccessRange!R) {
          8		R r;
          9		size_t position;
         10
         11		struct PowerSetItem {
         12			R r;
         13			size_t position;
         14
         15			private void advance() {
         16				while (!(position & 1)) {
         17					r.popFront();
         18					position >>= 1;
         19				}
         20			}
         21
         22			 property bool empty() { return position == 0; }
         23			 property auto front()
         24			{
         25				advance();
         26				return r.front;
         27			}
         28			void popFront()
         29			{
         30				advance();
         31				r.popFront();
         32				position >>= 1;
         33			}
         34		}
         35
         36		 property bool empty() { return position == (1 \<\< 
r.length); }
         37		 property PowerSetItem front() { return 
PowerSetItem(r.save, position); }
         38		void popFront() { position++; }
         39	}
         40
         41	auto powerSet(R)(R r) { return PowerSet!R(r); }

     /opt/dlang/ldc2-e20e2064-osx-arm64/bin/ldc2 -v ./power_set.d
     binary    /opt/dlang/ldc2-e20e2064-osx-arm64/bin/ldc2
     version   1.41.0-git-e20e206 (DMD v2.111.0, LLVM 19.1.7)
     config    /opt/dlang/ldc2-e20e2064-osx-arm64/etc/ldc2.conf 
(arm64-apple-darwin24.5.0)
     predefs   LDC all D_Version2 assert D_PreConditions 
D_PostConditions D_Invariants D_ModuleInfo D_Exceptions 
D_TypeInfo AArch64 ARM_HardFloat D_HardFloat LittleEndian D_LP64 
D_PIC OSX darwin Posix CppRuntime_LLVM CppRuntime_Clang 
LDC_LLVM_1901 D_ObjectiveC
     parse     power_set
     importall power_set
     import    
object	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/object.d)
     import    
core.attribute	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/attribute.d)
     import    
ldc.attributes	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/ldc/attributes.d)
     import    
core.internal.hash	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/hash.d)
     import    
core.internal.traits	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/traits.d)
     import    
core.internal.entrypoint	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/entrypoint.d)
     import    
core.internal.array.appending	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/appending.d)
     import    
core.internal.array.comparison	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/comparison.d)
     import    
core.internal.array.equality	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/equality.d)
     import    
core.internal.array.casting	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/casting.d)
     import    
core.internal.array.concatenation	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/concatenation.d)
     import    
core.internal.array.construction	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/construction.d)
     import    
core.internal.array.arrayassign	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/arrayassign.d)
     import    
core.internal.array.capacity	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/array/capacity.d)
     import    
core.internal.dassert	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/dassert.d)
     import    
core.internal.destruction	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/destruction.d)
     import    
core.internal.moving	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/moving.d)
     import    
core.internal.postblit	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/postblit.d)
     import    
core.internal.switch_	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/switch_.d)
     import    
core.lifetime	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/lifetime.d)
     import    
core.internal.attributes	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/internal/attributes.d)
     import    
core.builtins	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/core/builtins.d)
     import    
ldc.intrinsics	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/ldc/intrinsics.di)
     import    
std.range	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/package.d)
     import    
std.typecons	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/typecons.d)
     import    
std.format.spec	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/spec.d)
     import    
std.traits	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/traits.d)
     import    
std.meta	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/meta.d)
     import    
std.range.primitives	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/primitives.d)
     import    
std.format.write	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/write.d)
     import    
std.format.internal.write	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/format/internal/write.d)
     import    
std.internal.attributes	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/internal/attributes.d)
     import    
std.array	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/array.d)
     import    
std.functional	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/functional.d)
     import    
std.conv	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/conv.d)
     import    
std.ascii	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/ascii.d)
     import    
std.range.interfaces	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/range/interfaces.d)
     semantic  power_set
     import    
std.exception	(/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../import/std/exception.d)
     semantic2 power_set
     semantic3 power_set
     GC stats  6M used, 6M free, 12M total
     code      power_set
     /usr/bin/cc power_set.o -o power_set 
-L/opt/dlang/ldc2-e20e2064-osx-arm64/bin/../lib -lphobos2-ldc 
-ldruntime-ldc -Wl,-dead_strip -lpthread -lm -lobjc -target 
arm64-apple-macos15
     Undefined symbols for architecture arm64:
       "_main", referenced from:
           \<initial-undefines>
     ld: symbol(s) not found 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

What am I doing wrong here?

Thanks,
Ken Wolcott
May 18
parent reply Kagamin <spam here.lot> writes:
It's a code snippet, not a full program, so you can't compile it 
to an executable.
May 19
parent Kenneth Wolcott <kennethwolcott gmail.com> writes:
On Monday, 19 May 2025 at 08:55:52 UTC, Kagamin wrote:
 It's a code snippet, not a full program, so you can't compile 
 it to an executable.
Thank you, it is obvious now.
May 19