目次
質問の内容
ホームページ バックエンド開発 Golang go build を使用して iPhone シミュレーター用の静的ライブラリを構築する

go build を使用して iPhone シミュレーター用の静的ライブラリを構築する

Feb 09, 2024 pm 10:33 PM
言語を移動 iphone エミュレータ ios16

使用 go build 为 Iphone 模拟器构建静态库

php エディタ Zimo の紹介: iOS アプリケーションを開発するとき、多くの場合、静的ライブラリを使用して関数を拡張したり、いくつかの共通ツール関数を提供したりする必要があります。 Go 言語を使用して開発する開発者は、go build コマンドを使用して iPhone シミュレーター用の静的ライブラリを構築する方法を疑問に思うかもしれません。この記事では、 go build コマンドを使用して静的ライブラリを構築する方法を詳しく紹介し、開発者が静的ライブラリの構築プロセスを正常に完了するのに役立ついくつかの実用的なヒントと注意事項を提供します。初心者でも経験豊富な開発者でも、この記事を読んで、静的ライブラリの構築に関する実践的な知識とヒントを得ることができます。

質問の内容

次の方法を使用して、ios プロジェクトに c アーカイブをビルドします。

goos=ios goarch=arm64 cgo_enabled=1 sdk=iphonesimulator cgo_cflags="-fembed-bitcode" cc=pwd/clangwrap.sh go build -buildmode=c-archive -o libuplink .a

clangwrap.sh は次のようになります

リーリー

Xcode でリンクし、シミュレーターを使用して実行しようとすると、デバイス自体でのみ実行できます:

リーリー

go build のシミュレーターを Swift プロジェクトで使用される静的ライブラリとして位置付けるにはどうすればよいですか?

ソリューション

要件

    iPhone シミュレーター用の静的ライブラリを作成する
  • インテル エミュレータの代わりに Apple シリコンを使用します
  • 特定の最小バージョンを実現できる機能

tl;dr

実行先にシミュレータを選択すると、xcodeと同様のことができます。

したがって、基本的には、

-arch arm64 の代わりに -target arm64-apple-ios16.2-simulator のようなものを使用します。また、-mios-version-min=10.0 も省略します。実際の最小バージョンは -target (例: 16.2) でエンコードされているため、それが優先されます (エミュレータの正しいオプションは とにかく -miphonesimulator-バージョン-min) .

次に、

cgo_ldflags として、-target オプション、-syslibroot および SDK へのパスも指定します。

ビルド スクリプトを少し調整すると、次のようになります:

これは、エミュレータをターゲットとして指定し、最小バージョンは 15 です。

build.sh リーリー

target.sh リーリー

clangwrap.sh

その後、

clangwrap.sh は次のように簡略化されます: リーリー ######詳細######

別の SDK

iOS デバイスと iPhone シミュレーターには異なる SDK を指定する必要があります。これらは、xcode でサポートされている他のプラットフォームの隣にあります。

/applications/xcode.app/contents/developer/platforms の下。たとえば、xcode 14.2 などでは、iphoneos16.2.sdk

を含む

iphoneos プラットフォームと、iphonesimulator16.2.sdk iphonesimulator を含む があります。 ### プラットホーム。 Apple 開発者フォーラムの Apple 従業員が次の興味深い投稿を投稿しました: https://developer.apple.com/forums/thread/673387#662260022

load

コマンド用に生成された静的ライブラリを検査するには、次のコマンドを呼び出します。 リーリー Apple Silicon シミュレーター用に生成された静的ライブラリには、次のように表示されるはずです:

リーリー

注: platform 7 はシミュレーターを表し、

minos

は最小のデプロイメント ターゲットを表し、

sdk

は使用される実際の SDK バージョンを表します。 インクルード ファイル loader.h のセクションを参照してください: リーリー 次のように、システム上で自分で表示できます:

リーリー

iPhone デバイス専用に構築

iPhone SDK の静的ライブラリを構築するには、以下を変更する必要があります:

リーリー

上記の build.sh スクリプト内。

otool -l 出力は次のように表示されます: リーリー

注: platform 2

は、エミュレータではなく、platform_ios を表します。

これはもちろんデバイス上で完全に動作します。

以上がgo build を使用して iPhone シミュレーター用の静的ライブラリを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Golandのカスタム構造ラベルが有効になっていないという問題を解決する方法は? Golandのカスタム構造ラベルが有効になっていないという問題を解決する方法は? Apr 02, 2025 pm 12:51 PM

GoLandを使用する場合のGolandのカスタム構造タグの問題に関して、Go Language Developmentに使用する場合、いくつかの構成の問題に遭遇することがよくあります。それらの1つは...

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? GoおよびViperライブラリを使用するときにポインターを渡す必要があるのはなぜですか? Apr 02, 2025 pm 04:00 PM

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...

GO言語は、大規模なURLアクセスを処理するのに非効率的であり、最適化する方法は? GO言語は、大規模なURLアクセスを処理するのに非効率的であり、最適化する方法は? Apr 02, 2025 am 10:15 AM

GO言語のパフォーマンス最適化戦略大規模なURLアクセスこの記事では、GO言語を使用して大規模なURLアクセスを処理する問題に関するパフォーマンス最適化ソリューションを提案します。 CSVからの既存のプログラム...

GOプログラムが実行されているときにデバッグモードと通常の操作モードを区別する方法は? GOプログラムが実行されているときにデバッグモードと通常の操作モードを区別する方法は? Apr 02, 2025 pm 01:45 PM

GO言語プログラムが実行されているとき、デバッグモードと通常の操作モードを区別する方法は?多くの開発者は、さまざまなオペレーティングモードに従ってGOプログラムを開発したいと考えています...

See all articles