Hi @Finagolfin I've landed here after trying to pick up work from `swift-runtime: unable to suspend thread` when compiling in QEMU and use a cross-compile approach rather than QEMU. Thanks @taylorswift for your blog post which encouraged me to try this again!
As a reminder, I'm trying to build GitHub - grpc/grpc-swift: The Swift language implementation of gRPC. for aarch64 on a x86_64 Linux host in Docker. I have prepared the following JSON document named ubuntu-24.04-aarch64.json with the build config:
{
"version": 1,
"target": "aarch64-unknown-linux-gnu",
"toolchain-bin-dir": "/usr/bin",
"sdk": "/usr/aarch64-linux-gnu",
"extra-cc-flags": [
"-fPIC"
],
"extra-cpp-flags": [
"-lstdc++",
"-I",
"/usr/aarch64-linux-gnu/include/c++/13",
"-I",
"/usr/aarch64-linux-gnu/include/c++/13/aarch64-linux-gnu/"
],
"extra-swiftc-flags": [
"-resource-dir",
"/root/aarch64/usr/lib/swift"
]
}
I then copy that file into the swift base image, install the aarch64 toolchain and try to cross-compile grpc-swift with a minimal Dockerfile as follows:
FROM --platform=$BUILDPLATFORM swift:6.0.3-noble AS grpc_swift
RUN mkdir -p /protoc-gen-swift /grpc-swift /root/aarch64
RUN apt-get update
RUN apt-get install -y \
build-essential \
curl \
gcc-aarch64-linux-gnu \
g++-aarch64-linux-gnu
WORKDIR /root
RUN curl -sSL https://download.swift.org/swift-6.0.3-release/ubuntu2404-aarch64/swift-6.0.3-RELEASE/swift-6.0.3-RELEASE-ubuntu24.04-aarch64.tar.gz | tar xz --strip 1 -C /root/aarch64
COPY ubuntu-24.04-aarch64.json .
WORKDIR /grpc-swift
RUN curl -sSL https://api.github.com/repos/grpc/grpc-swift/tarball/1.24.2 | tar xz --strip 1 -C /grpc-swift
RUN swift build -c release --product protoc-gen-swift --destination /root/ubuntu-24.04-aarch64.json -v
When invoked with docker buildx build . this fails with an Scrt1.o: unsupported ELF machine number 183 error:
65.82 error: link command failed with exit code 1 (use -v to see invocation)
65.82 clang version 17.0.0 (https://github.com/swiftlang/llvm-project.git 2e6139970eda445d9c6872c0ca293088b4e63dd2)
65.82 Target: aarch64-unknown-linux-gnu
65.82 Thread model: posix
65.82 InstalledDir: /usr/bin
65.82 Found candidate GCC installation: /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13
65.82 Selected GCC installation: /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13
65.82 Candidate multilib: .;@m64
65.82 Selected multilib: .;@m64
65.82 "/usr/bin/ld.gold" -pie -EL --hash-style=gnu --eh-frame-hdr -m aarch64linux -dynamic-linker /lib/ld-linux-aarch64.so.1 -o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc-gen-swift /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/lib/Scrt1.o /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/lib/crti.o /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/crtbeginS.o -L/root/aarch64/usr/lib/swift/linux -L/grpc-swift/.build/aarch64-unknown-linux-gnu/release -L/usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13 -L/usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../lib64 -L/lib/aarch64-linux-gnu -L/lib/../lib64 -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib64 -L/usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/lib -L/lib -L/usr/lib -rpath /root/aarch64/usr/lib/swift/linux /root/aarch64/usr/lib/swift/linux/aarch64/swiftrt.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/AnyMessageStorage.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/AnyUnpackError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/AsyncMessageSequence.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecodingError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDecodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryDelimited.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingSizeVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/BinaryEncodingVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/CustomJSONCodable.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Decoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/DoubleParser.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Enum.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensibleMessage.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionFieldValueSet.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionFields.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ExtensionMap.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/FieldTag.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/FieldTypes.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Any+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Any+Registry.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Duration+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_FieldMask+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_ListValue+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_NullValue+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Struct+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Timestamp+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Value+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Google_Protobuf_Wrappers+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/HashVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Internal.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecodingError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONDecodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONEncodingVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONMapEncodingVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/JSONScanner.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/MathUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+AnyAdditions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+BinaryAdditions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+BinaryAdditions_Data.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+FieldMask.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONAdditions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONAdditions_Data.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONArrayAdditions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+JSONArrayAdditions_Data.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message+TextFormatAdditions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Message.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/MessageExtension.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/NameMap.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/PathDecoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/PathVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtoNameProviding.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtobufAPIVersionCheck.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ProtobufMap.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/SelectiveVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/SimpleExtensionMap.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/StringUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/SwiftProtobufContiguousBytes.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/SwiftProtobufError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecodingError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatDecodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncoder.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncodingOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatEncodingVisitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TextFormatScanner.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/TimeUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/UnknownStorage.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/UnsafeRawPointer+Shims.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Varint.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Version.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/Visitor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/WireFormat.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/ZigZag.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/any.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/api.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/descriptor.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/duration.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/empty.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/field_mask.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/resource_bundle_accessor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/source_context.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/struct.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/timestamp.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/type.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobuf.build/wrappers.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/CodeGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/CodeGeneratorParameter.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/CodePrinter.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/Descriptor+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/Descriptor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/FeatureResolver.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/FieldNumbers.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/GeneratorOutputs.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/Google_Protobuf_Compiler_CodeGeneratorResponse+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/Google_Protobuf_Edition+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/Google_Protobuf_SourceCodeInfo+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/NamingUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/PluginLibEditionDefaults.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/ProtoCompilerContext.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/ProtoFileToModuleMappings.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/ProvidesDeprecationComment.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/ProvidesLocationPath.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/ProvidesSourceCodeLocation.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/StandardErrorOutputStream.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/StringUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/SwiftLanguage.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/SwiftProtobufInfo.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/SwiftProtobufNamer.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/UnicodeScalar+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/plugin.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/resource_bundle_accessor.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/SwiftProtobufPluginLibrary.build/swift_protobuf_module_mappings.pb.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/CommandLine+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/Descriptor+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/EnumGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/ExtensionSetGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/FieldGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/FileGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/FileIo.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/GenerationError.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/GeneratorOptions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/Google_Protobuf_FileDescriptorProto+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/MessageFieldGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/MessageGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/MessageStorageClassGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/MessageStorageDecision.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/OneofGenerator.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/ProvidesDeprecationComment+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/ProvidesSourceCodeLocation+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/Range+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/StringUtils.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/SwiftGeneratorPlugin.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/SwiftProtobufNamer+Extensions.swift.o /grpc-swift/.build/aarch64-unknown-linux-gnu/release/protoc_gen_swift.build/Version.swift.o -lswiftCore -lswift_Concurrency -lswift_StringProcessing -lswift_RegexParser -lswiftGlibc -lBlocksRuntime -ldispatch -lswiftDispatch -lFoundation -lFoundationEssentials -lFoundationInternationalization -lm -lpthread -lutil -ldl -lswiftCore --gc-sections --defsym main=protoc_gen_swift_main "-rpath=\$ORIGIN" -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/crtendS.o /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/lib/crtn.o
65.82 /usr/bin/ld.gold: fatal error: /usr/bin/../lib/gcc-cross/aarch64-linux-gnu/13/../../../../aarch64-linux-gnu/lib/Scrt1.o: unsupported ELF machine number 183
65.82 clang: error: linker command failed with exit code 1 (use -v to see invocation)
I feel like I'm really close here, but I'm not sure why the linker is failing. I previously had a lot of hacky linker stuff going on like this, but I'm not sure if any of it is still necessary with Swift 6. Can anyone help me get this over the line?