arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.s 什麼意思? 2020-11-21
目錄
1、arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.s
-nostdlib:【No Standard Library 】
2.1 Makefile中的-Wall -O2 -Os -g等選項介紹
1、arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.s
Wall:【Warning all】
選項可以列印出編譯時所有的錯誤或者警告資訊。這個選項很容易被遺忘,編譯的時候,沒有錯誤或者警告提示,以為自己的程式很完美,其實,裡面有可能隱藏著許多陷阱。變數沒有初始化,型別不匹配,或者型別轉換錯誤等警告提示需要重點注意,錯誤就隱藏在這些程式碼裡面。沒有使用的變數也需要注意,去掉無用的程式碼,讓整個程式顯得乾淨一點。下次寫Makefile的時候,一定加-Wall編譯選項。
-O0:【Optimize 優化】
表示編譯時沒有優化。
-O1: 表示編譯時使用預設優化。
-O2: 表示編譯時使用二級優化。
-O3: 表示編譯時使用最高階優化。
-Os:相當於-O2.5優化,但又不所見程式碼尺寸,具體見連結:點選開啟連結 點選開啟連結
-nostdlib:【No Standard Library 】
不連線系統標準啟動檔案和標準庫檔案,只把指定的檔案傳遞給聯結器。這個選項常用於編譯核心、bootloader等程式,它們不需要啟動檔案、標準庫檔案。
從 gcc linker docs,
-nostdlib
Do not use the standard system startup files or libraries when
linking. No startup files and only the libraries you specify will be
passed to the linker, and options specifying linkage of the system
libraries, such as -static-libgcc or -shared-libgcc, are ignored.
因此使用,
-nodefaultlibs
連結時請勿使用標準系統庫.只有您指定的庫才會傳遞給連結器,指定系統庫連結的選項(如-static-libgcc或-shared-libgcc)將被忽略.除非使用-nostartfiles,否則標準啟動檔案將正常使用.編譯器可能會生成對memcmp,memset,memcpy和memmove的呼叫.這些條目通常由libc中的條目解析.指定此選項時,應通過其他機制提供這些入口點.
2、參考連結
2.1 Makefile中的-Wall -O2 -Os -g等選項介紹
2.2 gcc – g,靜態初始化和-nostdlib
http://www.voidcn.com/article/p-kiqmapwv-btm.html
2.3 編譯時“-nostdlib”的使用
https://blog.csdn.net/weibo1230123/article/details/82817006
2.4 使用GNU編譯器集合(GCC)官方手冊
https://gcc.gnu.org/onlinedocs/gcc/index.html#SEC_Contents
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
相關文章
- C# @什麼意思C#
- C++是什麼意思,為什麼叫C++?C++
- C++中::是什麼意思C++
- "->" 在c語言中是什麼意思?C語言
- 【轉】C語言中 -> 是什麼意思?C語言
- ->在c++中是什麼意思C++
- C/S結構是什麼意思?有什麼優點?
- c++中 -> 是什麼意思,如何使用C++
- C#中的 int?是什麼意思C#
- C++ 這個語句中[&]是什麼意思C++
- !important 什麼意思?Import
- [C++] cin, cout, clog, cerr中的c是什麼意思C++
- HTML是什麼意思?HTML
- Fastboot是什麼意思?ASTboot
- ITIL是什麼意思?ITIL是什麼?
- c++ 原始碼中&&變數是什麼意思呢?C++原始碼變數
- 原生IP是什麼意思?有什麼作用?
- mysql中是什麼意思?MySql
- python 是什麼意思Python
- jquery庫是什麼意思jQuery
- JavaScript Token是什麼意思JavaScript
- js 中~~是什麼意思?JS
- 加簽是什麼意思?
- JQuery中$(document)是什麼意思有什麼作用jQuery
- 原生IP是什麼意思?有什麼優勢?
- 原生IP是什麼意思?有什麼亮點?
- 什麼是API介面,具體是什麼意思?API
- c++ 中&表達的所有的意思分別是什麼C++
- python中len什麼意思Python
- mysql中的“=”是什麼意思MySql
- 動態ip是什麼意思?
- fluent python是什麼意思Python
- 低程式碼是什麼意思?
- 代理埠是什麼意思呢?
- 低程式碼是什麼意思
- JSESSIONID是什麼意思?JSSession
- > /dev/null 2>&1 什麼意思?devNull
- oracle rac gsd 是什麼意思 ?Oracle