日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

嵌入式linux入门-常用命令介绍

發布時間:2025/3/15 linux 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式linux入门-常用命令介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用芯片手冊的時候,會時常的看到芯片中有的位填寫的數字有保留,那是為了以后芯片升級和擴展使用的,現在是不使用。如GPF4占用的[9:8] 00 = Input,01 = Output, 10 = EINT, 11 = Reserved 保留位是為了以后進行擴展使用,現在使用不上。

使用虛擬機VMware有4種網絡連接方式:網橋網絡(Bridged)、網絡地址翻譯網絡(NAT)、僅為主機網絡(Host-only)和客戶網絡。常用的網絡連接方式是前兩種。
網橋網絡需要連上網線才可以使用,當主機與目標板之間需要進行網絡通訊的時候使用這種方式,它相當于三臺處于同一網段的計算機,沒有使用網線的時候使用NAT網絡在主操作系統Windows與客戶操作系統Linux間進行通訊。

UBUNTU中使用軟件維護工具:qpt-get安裝沒有安裝的軟件

何為mount

mount是Linux下的一個命令,它可以將分區掛接到Linux的一個文件夾下,從而將分區和該目錄聯系起來,因此我們只要訪問這個文件夾,就相當于訪問該分區了。 目前mount已經不僅僅局限于Linux了。在Windows系統下的應用也越來越廣了,多用在虛擬光驅類軟件上

在剛學習嵌入式linux時候,盡量使用已經制作好的工具鏈接
我使用的是韋東山制作好的嵌入式P40頁

  • -C

在程序編譯器之前加上“-c”,只會進行預處理、編譯和匯編源文件,但是不作連接。GCC會忽略-c選項之后任何無法識別的輸入文件。

  • -S
    編譯之后立即停止,不進行匯編。GCC忽略任何不需要匯編的輸入文件

  • -E
    預處理之后即停止,不進行編譯,忽略任何不需要預處理的輸入文件。

  • -o file
    指定輸出文件為file,無論是預處理、編譯、匯編還是連接,這個選項都可以使用。

  • -v
    顯示制作GCC工具時的自身配置命令;同時顯示編譯器驅動程序、預處理器、編譯器的版本號。

調試選項

  • -g以操作系統的本地格式(stabs、COFF、XCOFF、或DWARF)、產生調試信息,GDB能夠使用這些調試信息。

優化選項

  • -O或-O1, 不使用 - -O或-O1的時候只有聲明了register的變量才能分配使用寄存器。
  • -O2多優化一些。除了涉及空間和速度交換的優化選項,執行幾乎所有的優化工作,例如不進行循環展開(loop unrolling)和函數內嵌(inling)。和-O相比增加了代碼的編譯時間,也提高了生成代碼的運行效果。

  • -O3優化的更多。除了打開-O2所做的一切還打開了,“-finline-functions”選項

  • -O0如果指定了多個”-O”選項,不管帶不帶數字都是最后一個生效

連接器選項

  • -llibrary 即使不明顯的使用-llibrarya選項,一些默認的庫也被連接進去,可以使用”-v”選項看到這點
gcc -v -o test main.o sub.o
  • -nostartfiles 不連接系統標準啟動文件,而標準庫文件任然正常使用
gcc -v -nostartfiles -o test main.o sub.o
  • -nostdlib 不連接系統標準啟動文件和標準文件,只把指定的文件傳遞給連接器,這個選項常用語編譯內核、bootloader等程序,它們不需要啟動文件、標準庫文件。
gcc -v -nostdlib -o test main.o sub.o
  • -static 在支持動態鏈接的系統上阻止鏈接共享庫。使用和不使用”-static”選項編譯出來的可執行程序的大小相差很大
gcc -c -o main.o main.c gcc -c -o sub.o sub.c gcc -o test_static main.o sub.o -static gcc -o test main.o sub.o ls -l test test_static -rwxrwxr-x 1 book book 8664 74 14:54 test -rwxrwxr-x 1 book book 912728 74 14:53 test_static book@www.100ask.org:~/work/test$

當不使用-static進行編譯文件時,程序執行前還需要使用共享文件庫文件,所以還需要將共享文件庫放入文件系統中。

  • -shared
    生成一個共享OBJ文件,他可以和其他OBJ文件連接產生可執行文件,只有部分系統支持該選項,當不想以源代碼發布程序的時候可以使用”-shared”選項生成庫文件,比如對于options程序可以如下制作成庫文件
gcc -c -o sub.o sub.c gcc -shared -o sub.a sub.o

以后要使用sub.c中的函數sub_fun時,再連接程序的時候,將sub.a加入即可,比如:

gcc -o test main.o ./sub.a

可以將多個文件制作成一個庫文件,比如:

gcc -shared -o sub.o sub2.o sub3.o

目錄選項

下列選項指定搜索路徑,用于查找頭文件、庫文件或編譯器的某些成員。

  • -Idir
    在頭文件的搜索路徑中添加dir目錄。頭文件搜索的方法為:如果以”#include <>”包含頭文件,則在標準的頭文件目錄開始搜索(包含使用-Idir選項定義的目錄),如果以”#include ” ” “包含的文件,則先從用戶的工作目錄開始搜索,在搜索標準庫目錄。
  • -I-
    任何在”-I-“前面使用的”-I”選項指定的搜索路徑只適用于”#include “file” “這種情況,

arm-linux-ld 選項

arm-linux-ld 用于將多個目標文件、庫文件連接成可執行文件,本小節主要介紹”-T”選項,可以直接使用它指定代碼段、數據段、bss段的起始地址,也可以制定一個連接腳本在連接腳本中進行復雜的地址設置。
“-T”選項只用于連接Bootloader、內核等“沒有底層軟件支持”的軟件,連接運行于操作系統之上的應用程序,無需指定”-T”選項,它們使用默認的方式進行連接。

  • 直接指定代碼段、數據段、bss段的起始地址
    格式如下:
-Ttext startaddr -Tdata startaddr -Tbss startaddr

其中的”startaddr”分別代表代碼段、數據段和bss段的起始地址,它是一個十六進制的數。
在led_on的Makefile中有如下語句:

arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf

它表示的代碼段運行的地址為0x0000000,由于沒有定義數據段、bss段的起始地址,它們被依次放到代碼段的后面

  • 使用鏈接腳本設置地址
    在/work/source/hardware/timer的目錄下的程序為例,他的Makefile中有如下代碼:
arm-linux-ld -Ttimer.lds -o timer_elf head.o int.o interrupt.o main.o

使用鏈接腳本timer.lds來設置可執行文件timer_elf的地址信息,timer_elf文件內容如下:

SECTIONS {. = 30000000;.text :{ *(.text) }.rodata ALLGN{4} : { *(.rodata) }.data ALIGN{4} : { *(.data) }.bss ALIGN{4} : { *(.bss) *(COMMON)} }

鏈接腳本的基本命令是SECTIONS命令,他描述了輸出文件的映射圖:輸出文件中各段、各文件怎樣設置。一個SECTIONS 內部包含了一個或多個段,段(section)是鏈接腳本的基本單元,他表示輸入文件中的某個部分怎樣放置。

  • arm-linux-objcopy選項
    arm-linux-objcopy被用來復制一個目標文件的內容到另一個文件中,可以使用不同的源文件格式。在嵌入式中常使用arm-linux-objcopy命令將ELF格式的生成結果轉換為二進制文件,比如:
arm-linux-objcopy -o binary -S elf_file bin_file
  • arm-linux-objdump 常用來顯示二進制文本信息,本書中常用來查看反匯編代碼

    1.將ELF格式的文件轉換為反匯編文件:

arm-linux-objdump -D elf_file > dis_file

2.將二進制文件轉換為反匯編文件:

arm-linux-objdump -D -b binary -m arm bin_file > dis_file

總結

以上是生活随笔為你收集整理的嵌入式linux入门-常用命令介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。