Thread overview
Undefined symbols for architecture arm64
May 19
Kagamin
May 18

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 19

It's a code snippet, not a full program, so you can't compile it to an executable.

May 19

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.