← man/dev_and_programming
nmedit — man nmedit — 80×24
ugur@toprak:~/man/dev_and_programming$man nmedit
Bölüm 1 Geliştirme & Programlama

nmedit

genel (global) sembolleri yerel (local) sembollere dönüştürür

Sözdizimi

       nmedit -s list_file [-R list_file] [-p] [-A] [-] [[-arch arch_type] ...] object_file ... [-o
       output]

Açıklama

nmedit, -s list_file seçeneğinin list_file dosyasında listelenmeyen genel (global) sembolleri statik (static) sembollere dönüştürür. Tanımlanmamış semboller (undefined symbols) ve ortak semboller (common symbols) bundan etkilenmez ve list_file dosyasında listelenmemelidir. Dinamik kitaplıklar için semboller, artık harici olmayan özel harici (private extern) sembollere dönüştürülür (statik semboller yerine). Bu işlem, dinamik bir kitaplığın modülleri arasındaki referansların dinamik kitaplıktaki sembollerle çözümlenmesi için yapılır. nmedit'in strip(1) aracından farkı, statik sembollere dönüştürdüğü genel semboller için (cc(1) aracının -g seçeneğiyle üretilen) sembolik hata ayıklama bilgilerini de değiştirmesidir; böylece elde edilen nesne hata ayıklayıcı ile kullanılmaya devam edilebilir.

nmedit, strip(1) gibi, daha sonraki bağlama (linking) işlemlerinde kullanılacak sembolleri sınırlamak için kullanışlıdır. Bu, yürütülebilir dosyanın dinamik olarak yükleyeceği nesnelere sağlamak istediği arayüzün kontrol edilmesini sağlar ve arayüzünün bir parçası olmayan sembolleri yayınlamak zorunda kalmaz. Örneğin, genel sembollerinin yalnızca bir alt kümesine ama paylaşılan kitaplıkların tüm genel sembollerinin kullanılmasına izin vermek isteyen bir yürütülebilir dosyanın sembol tablosu şu şekilde düzenlenir: % nmedit -s interface_symbols -A executable burada interface_symbols dosyası, yürütülebilir dosyadan yalnızca çalışma zamanında yüklenen nesnelerin erişmesini istediği sembolleri içerecektir. Başka bir örnek ise, bir yürütülebilir dosyaya yüklenecek olan ve bir dizi başka nesneden oluşan bir nesnenin derlenmesi ve ardından sembol tablosunun şu şekilde düzenlenmesidir: % ld -o relocatable.o -r a.o b.o c.o % nmedit -s interface_symbols relocatable.o bu işlem, nesne dosyasında yalnızca interface_symbols dosyasında listelenen sembolleri (ve tanımlanmamış ile ortak sembolleri) genel semboller olarak bırakır.

nmedit(1) için aşağıdaki seçeneklerden bir veya daha fazlasının belirtilmesi zorunludur:

-s filename filename içinde listelenen genel sembollerin sembol tablosu girdilerini genel (global) olarak bırakır, ancak diğer tüm genel sembolleri (tanımlanmamış ve ortak semboller hariç) statik sembollere dönüştürür. filename içinde listelenen sembol adları satır başına bir tane olmalıdır. Baştaki ve sondaki boşluklar sembol adının bir parçası değildir. # ile başlayan satırlar ve yalnızca boşluk içeren satırlar yoksayılır.

-R filename filename içinde listelenen genel sembollerin sembol tablosu girdilerini statik sembollere dönüştürür. Bu dosya, yukarıdaki -s filename seçeneğiyle aynı biçime sahiptir. Eğer -R filename seçeneği -s filename seçeneği olmadan belirtilirse, -R filename seçeneğinin dosyasında listelenmeyen tüm semboller genel olarak bırakılır. Hem -R filename hem de -s filename belirtilirse, -R filename içinde listelenen semboller temel olarak yoksayılır ve yalnızca -s filename içinde listelenen semboller korunur.

  • -p: Sembolleri statik yerine özel haricilere (private externs) dönüştürür. Tüm tanımlanmış genel sembolleri özel haricilere dönüştürmek için tek seçenek olarak kullanılmasına izin verilir.

nmedit(1) seçenekleri şunlardır:

  • -A: Değeri sıfır olanlar dışındaki tüm genel mutlak sembolleri bırakır ve Objective-C sınıf sembollerini genel olarak kaydeder. Bu, çalışma zamanında kod yükleyen ve yüklenen kodun paylaşılan kitaplıklardaki sembolleri kullanmasını isteyen programların kullanımı içindir.

  • -D: Statik bir kitaplığı düzenlerken, arşivin SYMDEF dosyasının kullanıcı kimliğini, grup kimliğini, tarihini ve dosya modunu makul varsayılanlara ayarlar. Daha fazla bilgi için libtool(1) belgesindeki -D açıklamasına bakın.

  •  Kalan tüm argümanları seçenek değil, dosya adı olarak kabul eder.
    

-arch arch_type Dosya evrensel bir dosya olduğunda, nmedit(1) aracının işleyeceği dosya mimarisini (arch_type) belirtir (şu anda bilinen arch_types için arch(3) belgesine bakın). Dosyadaki tüm mimarileri işlemek için arch_type all olabilir. Varsayılan olarak, dosya içinde bulunan tüm mimariler işlenir.

-o output Sonucu output dosyasına yazar.

Ayrıca Bakınız

strip(1), ld(1), libtool(1), arch(3)

Hatalar

Sembolik hata ayıklama bilgilerinin nmedit tarafından değiştirilmesinin tamamen doğru olduğu bilinmemektedir ve hata ayıklayıcının çökmesine, kafasının karışmasına veya yanlış bilgiler üretmesine neden olabilir.

Apple Inc. 29 Mayıs 2007 NMEDIT(1)