Linux nm Komutanlığı

Linux Nm Komutanligi



Nesne dosyalarıyla veya çalıştırılabilir dosyalarla çalıştığınızda farklı durumlar olabilir. Bu tür senaryolar dosyanızdaki sembolleri kontrol etmenizi gerektirebilir. Linux'ta, nesnenizdeki veya çalıştırılabilir dosyanızdaki mevcut semboller hakkında bilgi görüntülemek için 'ad' komutunu kullanabilirsiniz.

Man sayfasına göre “nm” komutu “nesne dosyalarındaki sembolleri listelemek” için kullanılıyor. Aynı komut yürütülebilir dosyalarda da çalışır ve bunu bugün ayrıntılı olarak tartışacağız.







Farklı Örnekler Kullanarak Linux Nm Komutunu Anlamak

“Nm” komutu bazı Linux dağıtımlarında önceden kurulu olarak gelmez. Yüklü olup olmadığını görmek için sürümünü aşağıdaki komutla kontrol etmeyi deneyin:



$ nm --versiyon



Aşağıdakine benzer bir çıktı alırsanız “nm” kurulu değil demektir:





Bu yüzden aşağıdaki komutla “apt” kullanarak kurun. İstendiğinde “y” tuşuna basarak işlemi onayladığınızdan emin olun:

$ sudo uygun düzenlemek binutils



Artık sürümünü tekrar kontrol ederek “nm”nin sisteminizde mevcut olduğunu doğrulayabilirsiniz.

Artık Linux sisteminize “nm”yi başarıyla yüklediniz. Bir sonraki şey, hedef nesne dosyalarınızla ilgili bilgi almak için onu nasıl kullanacağınızı öğrenmektir.

Örnek 1: Nm Komutunu Çalıştırma

“Nm” ile çalıştırdığınızda komut, yürütülebilir bir nesne dosyası olan “a.out” adlı dosyayı arar. Bulunursa, içerdiği sembolleri görüntüler.

$ nm

Ancak mevcut dizinde böyle bir dosyanız yoksa aşağıdaki görüntüdeki gibi bir çıktı alacaksınız:

Bir C++ dosyası oluşturalım ve ardından onu g++ kullanarak derleyelim. Bunu yaptığımızda “nm” komutuyla kullanabileceğimiz bir “a.out” dosyası elde ediyoruz.

“nm” komutunu tekrar çalıştırdığımızda nesne dosyamızdaki tüm sembolleri gösteren bir çıktı elde ettiğimize dikkat edin. “Nm” komutları bu şekilde çalışır.

Örnek 2: Belirli Sembollerin Görüntülenmesi

Nesne dosyanızda belirli bir sembolü bulmak mümkündür. Bizim durumumuzda olduğu gibi yalnızca bir nesne dosyanız varsa ve “ana” sembolü bulmak istiyorsanız komutunuzu aşağıdaki gibi çalıştırın:

$ nm -A a.dışarı | kavramak ana

Ancak birden fazla nesne veya yürütülebilir dosyanız varsa komutunuzu aşağıdaki gibi görünecek şekilde değiştirin:

$ nm -A * .dışarı | kavramak ana

Örnek 3: Tanımsız Sembolleri Görüntüleme

“-u” seçeneği ile nesne dosyanızda sadece tanımlanmamış sembolleri elde etmeniz mümkündür. Komutu çalıştırırken “-u” seçeneğini eklediğimiz bir örnek:

$ nm -içinde a.dışarı

Aldığımız çıktının daha küçük olduğunu ve bunun nedeninin tüm sembollerin değil, yalnızca tanımsız olanların görüntülendiğini unutmayın.

Örnek 4: Bir Sembolün Boyutunu Görüntüleme

Belirli bir sembolü arayabilir ve boyutunu görüntüleyebilirsiniz. Bunun için “-s” seçeneğini kullanın. Bizim durumumuzda “abi” nesnesini arayalım ve ne elde ettiğimize bakalım.

$ nm -S | kavramak abi

Yalnızca arama kriterlerinizle eşleşen semboller ve boyutları görüntülenir.

Örnek 5: Dinamik Sembolleri Alma

“-D” seçeneği çıktıda yalnızca dinamik sembollerin görüntülenmesi gerektiğini belirtir. Aşağıdaki görselde “-D” ekledikten sonra sadece dinamik semboller yazdırıldığı için çıktımızın daraldığını görebiliriz:

Örnek 6: Çıktı Formatını Değiştirme

“Nm” tarafından kullanılan varsayılan çıktı formatı “bsd”dir. Ancak “-f” seçeneğini kullanarak farklı bir format belirleyebilirsiniz. Örneğin posix formatını kullanmak istiyorsak “nm” komutumuzu aşağıdaki gibi çalıştırıyoruz:

$ nm -F posix a.out

Örnek 7: Bir Dosyayla Çalışmak

Kullanmak istediğiniz her seçeneği terminalde “nm” komutuyla belirtmek yerine bir dosya kullanabilirsiniz. Dosya seçenekleri içerir ve dosyayı “nm” komutunu çalıştırırken eklersiniz. Komut, dosyadaki tüm seçenekleri kontrol eder ve gerekli eylemi gerçekleştirir.

İşte “-g –size-sort” seçeneğini içeren “file1” adlı bir dosya örneği.

Dosyaya başvurmak için komutu aşağıda gösterildiği gibi çalıştırın:

$ nm @ dosya1

Komut çalıştığında istediğiniz çıktıyı alacaksınız. Bu durumda sembolleri sıralayıp dış sembolleri almak için “-g” seçeneğini ekliyoruz ve gerisini yok sayıyoruz.

Çözüm

“Nm” komutu kullanıcıların sembollerle çalışmasına olanak sağlar. Bir yürütülebilir dosya veya nesne dosyasındaki tüm sembolleri görüntülemek için bu komutu kullanabilirsiniz. Bu yazı “nm” komutunu açıkladı. Ayrıca komutu kullanırken rahat olmanız için farklı örnekler de verdik. Umarım “nm” komutu artık açıktır.