← man/system_admin
vtool — man vtool — 80×24
ugur@toprak:~/man/system_admin$man vtool
Bölüm 1 Sistem Yönetimi

vtool

Mach-O sürüm numarası aracı

Kullanım

      vtool [-arch ⟨mimari⟩] ... ⟨görüntüleme_komutu⟩ ... dosya
      vtool [-arch ⟨mimari⟩] ... ⟨ayarlama_komutu⟩ ... [-replace] -output çıktı_dosyası dosya
      vtool [-arch ⟨mimari⟩] ... ⟨kaldırma_komutu⟩ ... -output çıktı_dosyası dosya
      vtool -help

Açıklama

vtool aracı, Mach-O(5) dosya biçiminde gömülü olan derleme (build) ve kaynak (source) sürüm numaralarını görüntüler ve düzenler. Bu sürüm numaraları, ⟨mach-o/loader.h⟩ başlık dosyasında ve aşağıdaki DERLEME YÜKLEME KOMUTLARI bölümünde açıklandığı gibi Mach-O yükleme komutlarında (load commands) saklanır. Dosyaları düzenlerken, -output bayrağı kullanılarak yeni bir çıktı_dosyası belirtilmelidir; vtool her zaman yalnızca tek bir çıktı dosyasına yazar ve girdi dosyaları asla yerinde (in-place) değiştirilmez.

vtool, komut satırında belirtilen argümanların türüne bağlı olarak (bir yardım moduna ek olarak) üç işlevsel moddan birinde çalışır: görüntüleme (show), ayarlama (set) ve kaldırma (remove). Tüm bu modlar sıradan Mach-O dosyalarının yanı sıra "evrensel" (çok mimarili) dosyalar üzerinde de çalışır. -arch bayrağı, işlemi evrensel bir dosya içindeki bir veya daha fazla mimari ile sınırlandırır.

Görüntüleme (Show) Görüntüleme seçenekleri arasında -show, -show-build, -show-source ve -show-space yer alır. Bu komutlardan yalnızca biri belirtilebilir. Sürüm bilgisi otool(1) veya otool-classic(1) araçlarına benzer bir şekilde yazdırılacaktır.

Ayarlama (Set) Ayarlama seçenekleri arasında -set-build-tool, -set-build-version, -set-source-version ve -set-version-min yer alır. Bu komutlardan herhangi bir sayısı tek bir vtool çağrısında birleştirilebilir. Bu ayarlama komutlarını bir Mach-O dosyasına yeni bir derleme sürümü eklemek veya belirli bir platform için mevcut bir sürümü değiştirmek amacıyla kullanabilirsiniz. -replace seçeneği ile birlikte kullanıldığında, mevcut tüm derleme sürümleri komut satırında belirtilen yeni derleme sürümleriyle tamamen değiştirilecektir.

Kaldırma (Remove) Kaldırma seçenekleri arasında -remove-build-tool, -remove-build-version ve -remove-source-version yer alır. Bu komutlardan herhangi bir sayısı tek bir vtool çağrısında birleştirilebilir.

Şu anda vtool yalnızca çalıştırılabilir dosyalar, dinamik kitaplıklar ve paketler (bundles) gibi nihai olarak bağlanmış (final linked) ikililer üzerinde çalışır. Mach-O nihai olarak bağlanmış ikililerindeki çalıştırılabilir kod taşınamaz veya yeniden boyutlandırılamaz olduğundan ve yükleme komutları mach başlığı (mach header) ile çalıştırılabilir kod arasında yer aldığından, vtool'un değişiklikleri kaydetmesi için yalnızca sınırlı miktarda alan mevcuttur. Yükleme komutlarını ekleyen veya yeniden boyutlandıran ayarlama (set) işlemleri, Mach-O dosyasında yeni yükleme komutlarını barındıracak yeterli alan yoksa başarısız olabilir.

Seçenekler

  • -arch ⟨mimari⟩: Dosya evrensel (çok mimarili) bir dosya olduğunda vtool'un üzerinde çalışacağı mimariyi, ⟨mimari⟩, belirtir. Güncel mimarilerin listesi için arch(3) kılavuz sayfasına bakın. Birden fazla mimari belirtilebilir ve varsayılan olarak vtool, evrensel bir dosyadaki tüm mimariler üzerinde çalışacaktır.

  • -h, -help: Tam kullanım bilgisini yazdırır.

-o, -output çıktı_dosyası Yeni dosyalar oluşturan komutlar, -output bayrağı ile belirtilen çıktı_dosyası dosyasına yazar. Bu seçenek tüm ayarlama ve kaldırma komutları için gereklidir.

  • -r, -replace: -set-build-version veya -set-version-min ile birlikte kullanıldığında -replace seçeneği, vtool'a girdi dosyasındaki mevcut tüm derleme sürümlerini atmasını bildirir. Tek bir vtool çağrısında bir dosyanın platformunu değiştirmek için bunu kullanın. -set-build-tool komutuyla kullanıldığında vtool, belirtilen platformun derleme sürümündeki tüm mevcut araç sürümlerini atacaktır. Bu seçeneğin kaynak (source) sürümleri üzerinde hiçbir etkisi yoktur.

-remove-build-tool platform araç Platform derleme sürümünden aracı kaldırır. Girdi dosyasında belirtilen platform için bir derleme sürümü bulunmalı ve bu derleme sürümü bir LC_BUILD_VERSION olmalıdır. -output ile birlikte kullanılmalıdır. Platform ve araç değerleri hakkında daha fazla bilgi için DERLEME YÜKLEME KOMUTLARI bölümüne bakın.

-remove-build-version platform Belirtilen platform için derleme sürümünü kaldırır. -output ile birlikte kullanılmalıdır. Platform değerleri hakkında daha fazla bilgi için DERLEME YÜKLEME KOMUTLARI bölümüne bakın.

-remove-source-version Mach-O dosyasından kaynak sürümünü kaldırır. -output ile birlikte kullanılmalıdır.

-set-build-tool platform araç sürüm Belirtilen aracı dahil etmek üzere platform için derleme sürümü yükleme komutunu günceller ve gerekirse yeni bir araç girişi ekler. Derleme sürümü, girdi dosyasında zaten var olan veya komut satırında yeni belirtilen bir LC_BUILD_VERSION yükleme komutu olmalıdır. Sürüm alanı X.Y.Z biçimini alır. -output ile birlikte kullanılmalıdır. Platform ve araç değerleri hakkında daha fazla bilgi için DERLEME YÜKLEME KOMUTLARI bölümüne bakın.

-set-build-version platform minos sdk [-tool araç sürüm] Belirtilen minos ve sdk sürüm numaralarını ve sıfır veya daha fazla isteğe bağlı aracı dahil etmek üzere platform için LC_BUILD_VERSION yükleme komutunu oluşturur veya günceller. minos, sdk ve araç sürümlerinin tümü X.Y.Z biçimini alır. -output ile birlikte kullanılmalıdır. Platform ve araç değerleri hakkında daha fazla bilgi için DERLEME YÜKLEME KOMUTLARI bölümüne bakın.

-set-source-version sürüm Kaynak sürümü yükleme komutunu oluşturur veya günceller. sürüm alanı A.B.C.D.E biçimini alır. -output ile birlikte kullanılmalıdır.

-set-version-min platform minos sdk Platform için bir LC_VERSION_MIN_* yükleme komutu oluşturur veya günceller. Bu seçenek eski işletim sistemlerini desteklemek için dahil edilmiştir ve genel olarak bunun yerine -set-build-version tercih edilmelidir. Sürüm min yükleme komutlarının araç sürümlerini desteklemediğini ve tüm platformların sürüm min yükleme komutları kullanılarak ifade edilemeyeceğini unutmayın. -output ile birlikte kullanılmalıdır.

-show, -show-all Belirtilen dosya içindeki derleme ve kaynak sürümlerini görüntüler. Bu seçenek diğer komutlarla birleştirilemez.

  • -show-build: Belirtilen dosya içindeki derleme sürümlerini görüntüler. Bu seçenek diğer komutlarla birleştirilemez.

  • -show-source: Belirtilen dosya içindeki kaynak sürümünü görüntüler. Bu seçenek diğer komutlarla birleştirilemez.

  • -show-space: Dosyada mach başlığı ve mevcut yükleme komutları tarafından tüketilen alanı gösterir ve yeni yükleme komutları eklemek için mevcut ek alan miktarını ölçer.

  •      Tek bir tire, vtool'a argümanları çözümlemeyi durdurmasını bildirir. Bu, adları aksi takdirde bir seçenek veya bayrak olarak yorumlanacak dosyalar üzerinde işlem yapmak için kullanışlıdır.
    

Derleme Yükleme Komutları

Modern Mach-O dosyaları, dosyada temsil edilen her benzersiz platform için bir tane olmak üzere birden fazla derleme sürümü içerebilir. Platform, Mach-O içinde macOS ve iOS gibi farklı Darwin işletim sistemlerini tanımlamak için kullanılan, gevşek tanımlanmış bir kavramdır. Platformlar ve araçlar adla (örneğin, "macos" veya "clang") veya numarayla (örneğin, "1") belirtilebilir. Yaygın platform ve araç sabitleri ⟨mach-o/loader.h⟩ dosyasında tanımlanmıştır ve vtool, -help ile çağrıldığında platform ve araç adlarını görüntüleyecektir.

Modern Mach-O dosyaları, derleme bilgilerini bir veya daha fazla LC_BUILD_VERSION yükleme komutunda saklar. LC_BUILD_VERSION, rastgele platformları destekler ve Mach-O dosyasını derlemek için kullanılan araçlar hakkında sürüm bilgileri içerebilir. Eski Mach-O dosyaları, LC_VERSION_MIN_MACOSX gibi bir “version min” (minimum sürüm) yükleme komutu kullanır. Sürüm min komutları, Mach-O dosyalarını daha eski işletim sistemlerinde dağıtırken uygun olsa da, araç sürümlerini desteklemediklerini ve tüm olası platformlar için sürüm min yükleme komutlarının bulunmadığını unutmayın. Bazı durumlarda LC_BUILD_VERSION ve LC_VERSION_MIN_* yükleme komutları tek bir Mach-O dosyasında görünebilir, ancak birçok kısıtlama geçerlidir ve vtool bu kısıtlamaları uygulamayabilir. vtool, aynı platform için birden fazla derleme sürümü yükleme komutu yazmanızı engelleyecektir.

Kaynak sürümleri tek bir LC_SOURCE_VERSION yükleme komutunda saklanır.

Yeni yükleme komutları yazarken vtool, yükleme komutlarının komut satırında göründükleri sırayı korumaya çalışacaktır. Mevcut diğer yükleme komutlarına göre konumları korumaya yönelik hiçbir girişimde bulunulmaz. Mevcut bir yükleme komutunu düzenlemek, yükleme komutunu yükleme komutları listesinin sonuna taşıma yan etkisine sahip olabilir.

Ayrıca Bkz.

ld(1), lipo(1), otool-classic(1), arch(3), Mach-O(5).

Geçmiş

LC_BUILD_VERSION ilk olarak 2017 yılında macOS 10.13 ile bridgeOS platformunda kullanılmak üzere ortaya çıkmıştır.

LC_BUILD_VERSION; 2018 yılında macOS 10.14, iOS 12.0 ve benzeri sürümlerle birlikte macOS, iOS, tvOS ve watchOS platformları için varsayılan derleme sürümü yükleme komutu haline geldi. Platform listesi ayrıca iOSSimulator, tvOSSimulator ve watchOSSimulator'ı içerecek şekilde genişledi.

vtool ilk olarak 2019 yılında macOS 10.15 ve iOS 13.0 ile ortaya çıkmıştır.

Hatalar

vtool, yükleme komutlarını ld(1) aracından farklı bir sırada yazacaktır.

Şu anda vtool nesne dosyaları (object files) veya arşivler (archives) ile çalışmamaktadır.

Darwin 31 Aralık 2018 Darwin