導航:首頁 > 程序命令 > linuxnm命令

linuxnm命令

發布時間:2023-04-17 17:39:11

『壹』 在Red Hat linux 中程序函數庫可以分為哪幾種類型 它們的調用方法各是什麼請說出nm和ldd兩個命令的作

1)、在Red Hat Linux中函數庫可以分為3種類型:靜態函數庫、共享函數庫和動態載入函數庫。
靜態函數庫在應用程序編譯時就把函數的執行代碼加入到應用程序中。
共享函數庫中的函數當一個可執行程序啟動時被載入。
動態載入函數庫可以在程序運行的任何階段載入函數。
2)、使用nm和ldd命令可以獲得關於庫函數的信息。
nm命令可以列出一個函數庫文件中的符號表,它對靜態的庫函數和共享的庫函數都能起作用。
ldd命令可以列出一個程序正常運行所需要的共享庫。
3)、庫函數預設存放在/lib和/usr/lib中,以及動態庫配置文件內所列的目錄中。
如果庫函數沒有在這些目錄下,可以在中加入所須目錄,後運行ldconfig命令,使之生效。或設置環境變數LD_LIBRARY_PATH或LD_PRELOAD加入庫函數所存放的目錄。

還有不會的請參考《linux就該這么學》,針對各種linux疑難雜症,幫助linux學習者。

『貳』 Centos如何設置靜態IP地址,LINUX怎麼修改IP地址

如果要讓IP地址永久生效,需要編輯網卡配置文件
使用VI編輯器設置,如 vi /etc/sysconfig/network-scripts/ifcfg-eth0

說明一下這個文件;DEVICE=eth0 網卡對應的設備別名,如ifcfg-eth0第一塊網卡 BOOTPROTO=static
網卡獲得ip地址的方式,
Static(靜態 ip地址)
dhcp(通過dhcp協議獲取ip)
bootip通過bootp協議獲得的ip地址 BROADCAST=192.168.0.255 子網廣播地址 HWADDR=00:50:56:8E:47:EE 網卡物理地址 IPADDR=12.168.1.117 網卡IP地址
IPV6INIT=no 是否啟用IPV6IPV6_AUTOCONF=no NETMASK=255.255.255.0 網卡對應網路掩碼 NETWORK=192.168.1.0 網卡對應的網路地址 ONBOOT=yes 系統啟動時是否設置此網路介面,設置為yes時,系統啟動時激活此設備。默認設置為yes
至於後面的 TYPE 和UUID這個就不用管了,這網卡的類型
2.使用vi編輯器, 按 insert鍵插入,進入編輯模式

3.將游標移動到 IPADDR 設置部分,改成需要設置的IP地址,
如本例中改成 1.118. 按下esc 鍵。
輸入 冒號:wq 保存退出
會提示 "/etc/sysconfig/network-scripts/ifcfg-eth0" 14L, 302C written

4. 設置好之後,把網路服務重啟一下,如下圖2個命令均可以 service network restart

5.再次查看IP你會發現已經改成新的IP地址 1.118了

『叄』 Linux Make問題

修改它的環境變數試試,下面是有關文章,你看看。
gcc環境變數
1.運行時動態庫的搜索路徑
方法一:在配置文件/etc/ld.so.conf中指定動態庫搜索路徑
方法二:通過環境變數LD_LIBRARY_PATH指定動態庫搜索路徑(當通過該芹困環境變數指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
方法三:在編譯目標代碼時指定該程序的動態庫搜索路徑(還可以在編譯目標代碼時指定程序的動態庫搜索路徑.
這是通過gcc 的參數"-Wl,-rpath,"指定(如例3所示).當指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
四:默認的動態庫搜索路徑/lib
五:默認的動態庫搜索路徑/usr/lib

動態庫的搜索路徑搜索的先後順序是:
(1).編譯目標代碼時指定的動態庫搜索路徑;
(2).環境變嫌返念量LD_LIBRARY_PATH指定的動態庫搜索路徑;
(3).配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;
(4).默認的動態庫搜索路徑/lib;
(5).默認的動態庫搜索路徑/usr/lib.

2※預處理(preprocessing),編譯(compilation),匯編(assembly)和連接(linking)
※include的header文件,連結資料庫,系統定義,總共有下列來源指定gcc去那找.
當初在編譯時指定的(在~gcc/gcc/collect2.c:locatelib()
寫在specs內的
後來用-D -I -L指定的
gcc環境變數設定(編譯的時候)
ld.so的環境變數(這是run time的時候)
===========================================
1
===========================================
1.頭文件
gcc 在編譯時如何去尋找所需要的頭文件 :
※所以header file的搜尋會從-I開始
※然後找gcc的環境變數 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH
※再找內定目錄
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
庫文件但是如果裝gcc的時候,是有給定的prefix的話,那麼就是
/usr/include
prefix/include
prefix/xxx-xxx-xxx-gnulibc/include
prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

2.庫文件
cos()等函式庫的選項要多加 -lm
編譯的時候:
※gcc會去找-L
※再找gcc的環境變數LIBRARY_PATH
※再找內定目錄 /lib /usr/lib /usr/local/lib 這是當初compile gcc時寫在程序內的
===============================世余=================
2
================================================2.利用Linux系統上已有的開發庫
(1).查看庫文件提供了哪些調用
可以用nm命令自己查看庫文件提供了哪些調用
(2).通過頭文件查看函數的定義
================================================
3
================================================
3.gcc選項
總體選項 (Overall Option) :(-c(生成目標但不連接) -S(匯編) -E(預處理) -o file(生成指定的文件) -pipe -v(顯示過程) -x language (設定文件所使用的語言,使後綴名無效`c', 可用參數`objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'))
語言選項 (LANGUAGE OPTIONS) :(-ansi 只支持 ANSI 標準的 C 語法.這一選項將禁止 GNU C 的某些特色)
預處理器選項 (Preprocessor Option) :(-Aassertion -C -dD -dM -dN -Dmacro[=defn] -E -H -idirafter dir -include file -imacros file -iprefix file -iwithprefix dir -M -MD -MM -MMD -nostdinc -P -Umacro 相當於C語言中的#undef macro -undef -DMACRO 以字元串「1」定義 MACRO 宏, -DMACRO=DEFN 以字元串「DEFN」定義 MACRO 宏)
匯編器選項 (ASSEMBLER OPTION) :(-Wa,option )
連接器選項 (LINKER OPTION) :(-llibrary -nostartfiles -nostdlib -static -shared -symbolic -Xlinker option -Wl,option -u symbol )
目錄選項 (DIRECTORY OPTION) :(-Bprefix -Idir -I- -Ldir)
警告選項 (WARNING OPTION) :(-w 不生成任何警告信息,-Wall 生成所有警告信息)
調試選項 (DEBUGGING OPTION) :(-a -dletters -fpretend-float -g -glevel -gcoff -gxcoff -gxcoff+ -gdwarf -gdwarf+ -gstabs -gstabs+ -ggdb -p -pg -save-temps -print-file-name=library -print-libgcc-file-name -print-prog-name=program )
優化選項 (OPTIMIZATION OPTION) :(-O0不進行優化處理,-O或-O1優化生成代碼 -O2進一步優化 -O3比-O2更進一步優化,包括inline函數)
目標機選項 (TARGET OPTION) :(-b machine -V version )
機器相關選項 (MACHINE DEPENDENT OPTION):(-m486 針對 486 進行代碼優化)
代碼生成選項 (CODE GENERATION OPTION) :(-fpic -fPIC)

『肆』 NM 是什麼

一、nm 命令
二、NM納米
三、NM耐磨
四、海運、航空度量單位
五、牛米
六:其他

[編輯本段]一、nm 命令
linux中,nm用來列出目標文件的符號清單。 下面是nm命令的格式: nm [-a|--debug-syms] [-g|--extern-only] [-B][-C|--demangle] [-D|--dynamic] [-s|--print-armap][-o|--print-file-name] [-n|--numeric-sort][-p|--no-sort] [-r|--reverse-sort] [--size-sort][-u|--undefined-only] [-l|--line-numbers] [--help][--version] [-t radix|--radix=radix][-P|--portability] [-f format|--format=format][--target=bfdname] [objfile...] 如果沒有為nm命令指出目標文件,則nm假定目標文件是a.out。下面列出該命令的任選項,大部分支持「-」開頭的短格式和「—「開頭的長格式。 -A、-o或--print-file-name:在找到的各個符號的名字前加上文件名,而不是在此文件的所有符號前只出現文件名一次。 例如nm libtest.a的輸出如下: CPThread.o: 00000068 T Main__8CPThreadPv 00000038 T Start__8CPThread 00000014 T _._8CPThread 00000000 T __8CPThread 00000000 ? __FRAME_BEGIN__ ………………………………… 則nm –A 的輸出如下: libtest.a:CPThread.o:00000068 T Main__8CPThreadPv libtest.a:CPThread.o:00000038 T Start__8CPThread libtest.a:CPThread.o:00000014 T _._8CPThread libtest.a:CPThread.o:00000000 T __8CPThread libtest.a:CPThread.o:00000000 ? __FRAME_BEGIN__ ………………………………………………………… -a或--debug-syms:顯示調試符號。 -B:等同於--format=bsd,用來兼容MIPS的nm。 -C或--demangle:將低級符號名解碼(demangle)成用戶級名字。這樣可以使得C++函數名具有可讀性。 -D或--dynamic:顯示動態符號。該任選項僅對於動態目標(例如特定類型的共享庫)有意義。 -f format:使用format格式輸出。format可以選取bsd、sysv或posix,該選項在GNU的nm中有用。默認為bsd。 -g或--extern-only:僅顯示外部符號。 -n、-v或--numeric-sort:按符號對應地址咐模的順序排序,而非按符號名的字元順序。 -p或--no-sort:按目標文件中遇到的符號順序顯示,不山簡團排序。 -P或--portability:使用POSIX.2標准輸出格式代替默認的輸出格式。等同於使用任逗橘選項-f posix。 -s或--print-armap:當列出庫中成員的符號時,包含索引。索引的內容包含:哪些模塊包含哪些名字的映射。 -r或--reverse-sort:反轉排序的順序(例如,升序變為降序)。 --size-sort:按大小排列符號順序。該大小是按照一個符號的值與它下一個符號的值進行計算的。 -t radix或--radix=radix:使用radix進制顯示符號值。radix只能為「d」表示十進制、「o」表示八進制或「x」表示十六進制。 --target=bfdname:指定一個目標代碼的格式,而非使用系統的默認格式。 -u或--undefined-only:僅顯示沒有定義的符號(那些外部符號)。 -l或--line-numbers:對每個符號,使用調試信息來試圖找到文件名和行號。對於已定義的符號,查找符號地址的行號。對於未定義符號,查找指向符號重定位入口的行號。如果可以找到行號信息,顯示在符號信息之後。 -V或--version:顯示nm的版本號。 --help:顯示nm的任選項。
[編輯本段]二、NM納米
1米的10負9次方,符號為nm。1納米=1毫微米(既十億分之一米),約為10個原子的長度。假設一根頭發的直徑為0.05毫米,把它徑向平均剖成5萬根,每根的厚度即約為1納米。 納米技術的含義-1 . 所謂納米技術,是指在0.1~100納米的尺度里,研究電子、原子和分子內的運動規律和特性的一項嶄新技術。科學家們在研究物質構成的過程中,發現在納米尺度下隔離出來的幾個、幾十個可數原子或分子,顯著地表現出許多新的特性,而利用這些特性製造具有特定功能設備的技術,就稱為納米技術。 . 納米技術與微電子技術的主要區別是:納米技術研究的是以控制單個原子、分子來實現設備特定的功能,是利用電子的波動性來工作的;而微電子技術則主要通過控制電子群體來實現其功能,是利用電子的粒子性來工作的。人們研究和開發納米技術的目的,就是要實現對整個微觀世界的有效控制。 . 納米技術是一門交叉性很強的綜合學科,研究的內容涉及現代科技的廣闊領域。1993年,國際納米科技指導委員會將納米技術劃分為納米電子學、納米物理學、納米化學、納米生物學、納米加工學和納米計量學等6個分支學科。其中,納米物理學和納米化學是納米技術的理論基礎,而納米電子學是納米技術最重要的內容。 納米技術的含義-2 納米技術(納米科技nanotechnology) 納米技術其實就是一種用單個原子、分子製造物質的技術。 從迄今為止的研究狀況看,關於納米技術分為三種概念。第一種,是1986年美國科學家德雷克斯勒博士在《創造的機器》一書中提出的分子納米技術。根據這一概念,可以使組合分子的機器實用化,從而可以任意組合所有種類的分子,可以製造出任何種類的分子結構。這種概念的納米技術未取得重大進展。 第二種概念把納米技術定位為微加工技術的極限。也就是通過納米精度的「加工」來人工形成納米大小的結構的技術。這種納米級的加工技術,也使半導體微型化即將達到極限。現有技術即便發展下去,從理論上講終將會達到限度。這是因為,如果把電路的線幅變小,將使構成電路的絕緣膜的為得極薄,這樣將破壞絕緣效果。此外,還有發熱和晃動等問題。為了解決這些問題,研究人員正在研究新型的納米技術。 第三種概念是從生物的角度出發而提出的。本來,生物在細胞和生物膜內就存在納米級的結構。 所謂納米技術,是指在0.1~100納米的尺度里,研究電子、原子和分子內的運動規律和特性的一項嶄新技術。科學家們在研究物質構成的過程中,發現在納米尺度下隔離出來的幾個、幾十個可數原子或分子,顯著地表現出許多新的特性,而利用這些特性製造具有特定功能設備的技術,就稱為納米技術。 納米技術是一門交叉性很強的綜合學科,研究的內容涉及現代科技的廣闊領域。 納米科技現在已經包括納米生物學、納米電子學、納米材料學、納米機械學、納米化學等學科。從包括微電子等在內的微米科技到納米科技,人類正越來越向微觀世界深入,人們認識、改造微觀世界的水平提高到前所未有的高度。我國著名科學家錢學森也曾指出,納米左右和納米以下的結構是下一階段科技發展的一個重點,會是一次技術革命,從而將引起21世紀又一次產業革命。 雖然距離應用階段還有較長的距離要走,但是由於納米科技所孕育的極為廣闊的應用前景,美國、日本、英國等發達國家都對納米科技給予高度重視,紛紛制定研究計劃,進行相關研究 納米電子器件的特點 . 以納米技術製造的電子器件,其性能大大優於傳統的電子器件: . 工作速度快,納米電子器件的工作速度是硅器件的1000倍,因而可使產品性能大幅度提高。功耗低,納米電子器件的功耗僅為硅器件的1/1000。信息存儲量大,在一張不足巴掌大的5英寸光碟上,至少可以存儲30個北京圖書館的全部藏書。體積小、重量輕,可使各類電子產品體積和重量大為減小。
[編輯本段]三、NM耐磨
這種是在鋼鐵行業的叫法:耐磨 如NM360(耐磨三六零)
[編輯本段]四、海運、航空度量單位
nautical mile 海里(1nm=1.8532km)
[編輯本段]五、牛米
嚴格的說,扭矩是力對物體作用的一種形式,它使物體產生轉動,其作用大小等於作用力和力臂(作用力到轉動中心的距離)的乘積。所以扭矩的單位是力的單位和距離的單位的乘積,即牛頓*米,簡稱牛米。 牛米扭矩就是汽車產生的力矩。
[編輯本段]六:Nm:
1.Nm【無損音樂】 Nondestructive music 無損音樂英文縮寫。 目前無損壓縮格式有APE、FLAC、WavPack、LPAC、WMALossless、AppleLossless、Tak、La、OptimFROG、Shorten,而常見的、主流的無損壓縮格式目前只有APE、FLAC。 2.Nm【公制紗支】 【公制紗支】的意思。紡織品經緯紗粗細的單位統稱;單位為s。 另外英制紗支為:Ne。

『伍』 /home/linux-2.6.25.8/scripts/mksysmap: line 43:arm-linux-nm command not found 怎麼改

這個是因為你在那個文件中使用了arm-linux-nm這個命令,但是你的系統里並沒有這個命令。
簡單來說,你打一個顯示當前文件夾內容的 ls 命令,但是如果你系統里沒有這個命令,那麼系統也會提示command not found,當然也不會顯示當前文件夾內容。
這類問題常見於使用交叉編譯鏈編譯文件時,由於沒有正確設禪答置編譯鏈,系統無法找到對應的命令。依照經驗,arm-linux-nm應該是交叉編譯指令。
改正方法應該是,檢查你的編譯工具設置和makefile文件(可能沒有),看二者與要編譯的目標文件是否匹配,檢查方法請參照你的板子手冊含逗或者開發指導。正確設置後,重新執行或者編談襲賣譯。

『陸』 java如何調用靜態鏈接庫裡面的函數

先添加後調用。

向eclispe中添加user Libraries的步驟:
1。點襪侍擊eclipse的window菜單,選擇「Preference」
2。在preferences窗口中選擇java->User Libraries,然後點擊窗口右邊的New...按鈕,在彈出的子窗口中輸入user library的名稱,此時在user libraries窗口中會出現新加侍好御的library名稱。
3。向該user library中添加jar包。選中my_lib,然後點擊Add JARS...按鈕,選擇你要添加的jar後,點擊「打開」按鈕,則my_lib庫中就會出現你剛添加的jar文件信息。
4。最後點擊窗口下的「OK」老岩按鈕,完成user library的添加和其jar的添加。

『柒』 linux系統C語言的nm是什麼意思

不是C語言吧?是森笑游系統命令。用來列舉object文件(比如編譯出的a.out)的symbols.
用法是:
nm [-a|--debug-syms] [-g|--extern-only]
[-B] [-C|--demangle[=style]] [-D|--dynamic]
[-S|--print-size] [-s|--print-armap]
[-A|-o|--print-file-name]
[-n|-v|--numeric-sort] [-p|--no-sort]
[-r|--reverse-sort] [--size-sort] [-u|--undefined-only]
[-t radix|--radix=radix] [-P|--portability]
[--target=bfdname] [-fformat|--format=format]
[--defined-only] [-l|--line-numbers] [--no-demangle]
[-V|--version] [-X 32_64] [--help] [objfile...]

具體而言,nm用來列出目標文件的符號清單。
如果沒有為nm命令升唯指出目標文件,則nm假定目標文件是a.out。下面列出該命令的任選項,大部分支持「-」開頭的短格式和「-「開頭的長格式。
-A、-o或--print-file-name:在找到的各個符號的名字前加上文件名,而不是在此文件的所有符號前只出現文件名一次。

例如nmlibtest.a的輸出如下:

CPThread.o:
00000068TMain__8CPThreadPv
00000038TStart__8CPThread
00000014T_._8CPThread
00000000T__8CPThread
00000000?__FRAME_BEGIN__
…………………………………

則nm-A的輸出如下:

libtest.a:CPThread.o:00000068TMain__8CPThreadPv
libtest.a:CPThread.o:00000038TStart__8CPThread
libtest.a:CPThread.o:00000014T_._8CPThread
libtest.a:CPThread.o:00000000T__8CPThread
libtest.a:CPThread.o:00000000?__FRAME_BEGIN__
…………………………………………………………..

-a或--debug-syms:顯示調試符號。

-B:等同於--format=bsd,用來兼容MIPS的nm。

-C或--demangle:將低級符號名解碼(demangle)成用戶級名字。這樣可以使得C 函數名具有可讀性。

-D或--dynamic:顯示動態符號。該任選項僅對於動態目標(例如特定類型的共享庫)有意義。

-fformat:使用format格式輸出。format可以選取bsd、sysv或posix,該選項在GNU的nm中有用。默認為bsd。

-g或--extern-only:僅顯示外部符號。

-n、-v或--numeric-sort:按符號對應地址的順序排序,而非按符號名的字元順序。

-p或--no-sort:按目標此銷文件中遇到的符號順序顯示,不排序。

-P或--portability:使用POSIX.2標准輸出格式代替默認的輸出格式。等同於使用任選項-fposix。

-s或--print-armap:當列出庫中成員的符號時,包含索引。索引的內容包含:哪些模塊包含哪些名字的映射。

-r或--reverse-sort:反轉排序的順序(例如,升序變為降序)。

--size-sort:按大小排列符號順序。該大小是按照一個符號的值與它下一個符號的值進行計算的。

-tradix或--radix=radix:使用radix進制顯示符號值。radix只能為「d」表示十進制、「o」表示八進制或「x」表示十六進制。

--target=bfdname:指定一個目標代碼的格式,而非使用系統的默認格式。

-u或--undefined-only:僅顯示沒有定義的符號(那些外部符號)。

-l或--line-numbers:對每個符號,使用調試信息來試圖找到文件名和行號。對於已定義的符號,查找符號地址的行號。對於未定義符號,查找指向符號重定位入口的行號。如果可以找到行號信息,顯示在符號信息之後。

-V或--version:顯示nm的版本號。

--help:顯示nm的任選項。
ar cs libmy.a//創建一個庫
ar rs libmy.a 1.o//增加一個模塊
ar t libmy.a//顯示庫里的模塊
ar d libmy.a 1.o//刪除一個模塊

『捌』 Linux裡面nm是什麼意思

這是一個非常罕察閉見的命令,搞Linux開發的人, 才可能會用到nm命令,其他老男孩Linux運維等幾乎用不到。
nm命令是names的縮寫, nm命令主要是用來列出某些文件中的符號(說白了就是一些敗巧裂函數和全局變數等),具體查寬神看,可以網路 搜 linux nm。

『玖』 linux下C程序段錯誤,

1. 段錯誤是什麼
一句話來說,段錯誤是指訪問的內存超出了系統給這個程序所設定的內存空間,例如訪問了不存在的內存地址、訪問了系統保護的內存地址、訪問了只讀的內存地址等等情況。這里貼一個對於「段錯誤」的准確定義(參考Answers.com):

A segmentation fault (often shortened to segfault) is a particular error condition that can occur ring the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.

Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

2. 段錯誤產生的原因
2.1 訪問不存在的內存地址

#include<stdio.h>
#include<stdlib.h>
void main()
{
int *ptr = NULL;
*ptr = 0;
}

2.2 訪問系統保護的內存地址

#include<stdio.h>
#include<stdlib.h>
void main()
{
int *ptr = (int *)0;
*ptr = 100;
}

2.3 訪問只讀的內存地址

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
char *ptr = "test";
strcpy(ptr, "TEST");
}

2.4 棧溢出

#include<stdio.h>
#include<stdlib.h>橋埋埋
void main()
{
main();
}

等等其他原因。
3. 段錯誤信息的獲取
程序發生段錯誤時,提示信息很少,下面有幾種查看段錯誤的發生信息的途徑。
3.1 dmesg
dmesg可以在應用程序crash掉時,顯示內核中保存的相關信息。如下所示,通過dmesg命令可以查看發生段錯誤的程序名稱、引起段錯誤發生的內存地址、敏螞指令指針地址、堆棧指針地址、錯誤代碼、錯誤原因等液沖。以程序2.3為例:
panfeng@ubuntu:~/segfault$ dmesg
[ 2329.479037] segfault3[2700]: segfault at 80484e0 ip 00d2906a sp bfbbec3c error 7 in libc-2.10.1.so[cb4000+13e000]
3.2 -g
使用gcc編譯程序的源碼時,加上-g參數,這樣可以使得生成的二進制文件中加入可以用於gdb調試的有用信息。以程序2.3為例:
panfeng@ubuntu:~/segfault$ gcc -g -o segfault3 segfault3.c

3.3 nm
使用nm命令列出二進制文件中的符號表,包括符號地址、符號類型、符號名等,這樣可以幫助定位在哪裡發生了段錯誤。以程序2.3為例:

panfeng@ubuntu:~/segfault$ nm segfault3
08049f20 d _DYNAMIC
08049ff4 d _GLOBAL_OFFSET_TABLE_
080484dc R _IO_stdin_used
w _Jv_RegisterClasses
08049f10 d __CTOR_END__
08049f0c d __CTOR_LIST__
08049f18 D __DTOR_END__
08049f14 d __DTOR_LIST__
080484ec r __FRAME_END__
08049f1c d __JCR_END__
08049f1c d __JCR_LIST__
0804a014 A __bss_start
0804a00c D __data_start
08048490 t __do_global_ctors_aux
08048360 t __do_global_dtors_aux
0804a010 D __dso_handle
w __gmon_start__
0804848a T __i686.get_pc_thunk.bx
08049f0c d __init_array_end
08049f0c d __init_array_start
08048420 T __libc_csu_fini
08048430 T __libc_csu_init
U __libc_start_main@@GLIBC_2.0
0804a014 A _edata
0804a01c A _end
080484bc T _fini
080484d8 R _fp_hw
080482bc T _init
08048330 T _start
0804a014 b completed.6990
0804a00c W data_start
0804a018 b dtor_idx.6992
080483c0 t frame_mmy
080483e4 T main
U memcpy@@GLIBC_2.0

3.4 ldd
使用ldd命令查看二進製程序的共享鏈接庫依賴,包括庫的名稱、起始地址,這樣可以確定段錯誤到底是發生在了自己的程序中還是依賴的共享庫中。以程序2.3為例:
panfeng@ubuntu:~/segfault$ ldd ./segfault3
linux-gate.so.1 => (0x00e08000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00675000)
/lib/ld-linux.so.2 (0x00482000)

『拾』 nm是什麼意思

5nm是5納米的意思。
「nm」是一簡臘笑個單位,中文意思是「納米」。1nm等於.1cm,而5nm的寬度是可以想像的,小到我們肉眼可能根本分辨不出來。
1.5納米相當於頭發攔含的萬分之一。一根頭發大約有6萬納米,所以5納米幾乎是頭發的萬分之一。以高通7nm驍龍8cx晶元面積為例,直徑3mm的晶圓上局森有532個核心,水平方向最多22個核心,垂直方向最多36個核心。經計算,每個晶元的面積約為112平方毫米(13.5×8.3毫米)。

閱讀全文

與linuxnm命令相關的資料

熱點內容
gis伺服器里文件如何處理 瀏覽:829
sec加密數字資產 瀏覽:930
winrar命令行壓縮 瀏覽:790
java成員變數默認 瀏覽:491
解壓神器噴泉視頻 瀏覽:91
現代的語文書是哪裡編譯 瀏覽:108
知乎教孩子學編程 瀏覽:520
vivo加密的應用怎麼解開 瀏覽:918
波形分析演算法 瀏覽:528
php論壇實訓報告 瀏覽:406
java日期字元串轉換成日期 瀏覽:137
linuxsftp連接 瀏覽:936
光伏日發電量演算法 瀏覽:127
小肚皮app怎麼才有vip 瀏覽:618
php全形轉換半形 瀏覽:929
java字元序列 瀏覽:541
杭州編譯分布式存儲區塊鏈 瀏覽:577
材料壓縮曲線 瀏覽:249
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:981