I followed the Build a Command-line Tool instructions and found that it does not work.
I want to write only CLI programs, so Xcode is not installed.
I didn't use Install Swift because I found that swift --version
works fine!
swift --version
swift-driver version: 1.120.5 Apple Swift version 6.1 (swiftlang-6.1.0.110.21 clang-1700.0.13.3)
Target: arm64-apple-macosx15.0
swift package --version
Swift Package Manager - Swift 6.1.0
➜ MyCLI swift package init --name MyCLI --type executable
Creating executable package: MyCLI
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources/main.swift
➜ MyCLI swift run MyCLI
error: 'mycli': Invalid manifest (compiled with: ["/Library/Developer/CommandLineTools/usr/bin/swiftc", "-vfsoverlay", "/var/folders/ht/yq7cghwx62x_dsm_q6qbtfp40000gn/T/TemporaryDirectory.JZ0Atb/vfs.yaml", "-L", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-lPackageDescription", "-Xlinker", "-rpath", "-Xlinker", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-target", "arm64-apple-macosx14.0", "-F", "/Library/Developer/CommandLineTools/Library/Developer/Frameworks", "-sdk", "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk", "-swift-version", "6", "-I", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-sdk", "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk", "-package-description-version", "6.1.0", "/Users/bifuhong/Documents/code/MyCLI/Package.swift", "-o", "/var/folders/ht/yq7cghwx62x_dsm_q6qbtfp40000gn/T/TemporaryDirectory.IGmE3P/mycli-manifest"])
error: link command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture arm64:
"PackageDescription.Package.__allocating_init(name: Swift.String, defaultLocalization: PackageDescription.LanguageTag?, platforms: [PackageDescription.SupportedPlatform]?, pkgConfig: Swift.String?, providers: [PackageDescription.SystemPackageProvider]?, products: [PackageDescription.Product], dependencies: [PackageDescription.Package.Dependency], targets: [PackageDescription.Target], swiftLanguageVersions: [PackageDescription.SwiftVersion]?, cLanguageStandard: PackageDescription.CLanguageStandard?, cxxLanguageStandard: PackageDescription.CXXLanguageStandard?) -> PackageDescription.Package", referenced from:
_main in Package-1.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: 'mycli': Invalid manifest (compiled with: ["/Library/Developer/CommandLineTools/usr/bin/swiftc", "-vfsoverlay", "/var/folders/ht/yq7cghwx62x_dsm_q6qbtfp40000gn/T/TemporaryDirectory.79oKx4/vfs.yaml", "-L", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-lPackageDescription", "-Xlinker", "-rpath", "-Xlinker", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-target", "arm64-apple-macosx14.0", "-F", "/Library/Developer/CommandLineTools/Library/Developer/Frameworks", "-sdk", "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk", "-swift-version", "6", "-I", "/Library/Developer/CommandLineTools/usr/lib/swift/pm/ManifestAPI", "-sdk", "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk", "-package-description-version", "6.1.0", "/Users/bifuhong/Documents/code/MyCLI/Package.swift", "-o", "/var/folders/ht/yq7cghwx62x_dsm_q6qbtfp40000gn/T/TemporaryDirectory.ANIb7j/mycli-manifest"])
error: link command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture arm64:
"PackageDescription.Package.__allocating_init(name: Swift.String, defaultLocalization: PackageDescription.LanguageTag?, platforms: [PackageDescription.SupportedPlatform]?, pkgConfig: Swift.String?, providers: [PackageDescription.SystemPackageProvider]?, products: [PackageDescription.Product], dependencies: [PackageDescription.Package.Dependency], targets: [PackageDescription.Target], swiftLanguageVersions: [PackageDescription.SwiftVersion]?, cLanguageStandard: PackageDescription.CLanguageStandard?, cxxLanguageStandard: PackageDescription.CXXLanguageStandard?) -> PackageDescription.Package", referenced from:
_main in Package-1.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
If I use swift
to run a single file directly, it works fine.
cat temp.swift && swift temp.swift
print(1)
1
I solved the problem by reinstalling /Library/Developer/CommandLineTools.
In fact, I still don't know the specific cause of this problem. I just started to learn Swift (starting from the configuration of the development environment).
Next, I will try my best to show my current development environment and how to solve this problem:
I used helix
to write rust
and python
code on this Mac mini, so I installed /Library/Developer/CommandLineTools
.
Recently, I want to learn Swift (CLI program), and at the same time, I think xcode
is too heavy for current needs, so I didn't install xcode
.
Run swift --version
and swift package init
according to the Build a Command-line Tool, and they are running well.
The problem occurred when running swift run
, and the error message has been displayed in the problem description.
At this time, I didn't make any additional installation(because swift --version
and swift package init
work well).
After many useless attempts, I reinstalled CommandLineTools
, and the problem was solved.
From this, it should be possible to judge that CommandLineTools
has provided the basic tools of Swift:
➜ ls /Library/Developer/CommandLineTools/usr/bin | rg -i swift
aarch64-swift-linux-musl-clang++.cfg -> aarch64-swift-linux-musl-clang.cfg
aarch64-swift-linux-musl-clang.cfg
swift -> swift-frontend
swift-api-digester -> swift-frontend
swift-build -> swift-package
swift-cache-tool -> swift-frontend
swift-demangle
swift-driver
swift-experimental-sdk -> swift-package
swift-format
swift-frontend
swift-help
swift-package
swift-package-collection -> swift-package
swift-package-registry -> swift-package
swift-plugin-server
swift-run -> swift-package
swift-sdk -> swift-package
swift-stdlib-tool
swift-symbolgraph-extract -> swift-frontend
swift-synthesize-interface -> swift-frontend
swift-test -> swift-package
swiftc -> swift-frontend
x86_64-swift-linux-musl-clang++.cfg -> x86_64-swift-linux-musl-clang.cfg
x86_64-swift-linux-musl-clang.cfg
➜ ls /Library/Developer/CommandLineTools/SDKs -TL2
/Library/Developer/CommandLineTools/SDKs
├── MacOSX.sdk -> MacOSX15.4.sdk
├── MacOSX14.5.sdk
│ ├── System
│ ├── usr
│ ├── Entitlements.plist
│ ├── SDKSettings.json
│ └── SDKSettings.plist
├── MacOSX14.sdk -> MacOSX14.5.sdk
├── MacOSX15.4.sdk
│ ├── System
│ ├── usr
│ ├── Entitlements.plist
│ ├── SDKSettings.json
│ └── SDKSettings.plist
└── MacOSX15.sdk -> MacOSX15.4.sdk
Since I know nothing about Swift, please let me know if you want to know more about my development environment.