嵌入式linux/鸿蒙开发板(IMX6ULL)开发(九)第一个程序背后的C语言知识
1.HelloWorld背后沒那么簡單
這部分知識籠統的介紹一下。提出幾個意識。其一,后期可能經常要用到C語言去編寫應用程序,這一段意味著你要很熟悉C語言的編寫規則以及背后的邏輯,比如指定頭文件,庫函數這些資源,在自己編寫的時候,會在自己編寫的時候使用這些資源。不了解的建議學習一下唐浩強的C語言。
1.1 交叉編譯hello.c
使用GIT下載所有源碼后,本節源碼位于如下目錄:
01_all_series_quickstart\ 04_嵌入式Linux應用開發基礎知識\source\01_hellohello.c的源碼如下:
01 #include <stdio.h> 02 03 /* 執行命令: ./hello weidongshan 04 * argc = 2 05 * argv[0] = ./hello 06 * argv[1] = weidongshan 07 */ 08 09 int main(int argc, char **argv) 10 { 11 if (argc >= 2) 12 printf("Hello, %s!\n", argv[1]); 13 else 14 printf("Hello, world!\n"); 15 return 0; 16 } 17在Ubuntu中可以執行以下命令編譯、執行:
$ gcc -o hello hello.c $ ./hello Hello, world! $ ./hello weidongshan Hello, weidongshan!上述命令編譯得到的可執行程序hello可以在Ubuntu中運行,但是如果把它放到ARM板子上去,它是無法執行的。因為它是使用gcc編譯的,是給PC機編譯的,里面的機器指令是x86的。
我們要想給ARM板編譯出hello程序,需要使用交叉編譯工具鏈,比如:
這樣編譯出來的hello程序才可以在ARM板子上運行。
1.2 請回答這幾個問題
① 怎么確定交叉編譯器中頭文件的默認路徑?
進入交叉編譯器的目錄里,執行:find -name “stdio.h”,它位于一個“include”目錄下的根目錄里。
這個“include”目錄,就是要找的路徑。
② 怎么自己指定頭文件目錄?
編譯時,加上“-I <頭文件目錄>”這樣的選項。
③ 怎么確定交叉編譯器中庫文件的默認路徑?
進入交叉編譯器的目錄里,執行:find -name lib,可以得到xxxx/lib、xxxx/usr/lib,一般來說這2個目錄就是要找的路徑。
如果有很多類似的lib,進去看看,有很多so文件的目錄一般就是要找的路徑。
④ 怎么自己指定庫文件目錄、指定要用的庫文件?
編譯時,加上“-L <庫文件目錄>”這樣的選項,用來指定庫目錄;
編譯時,加上“-labc”這樣的選項,用來指定庫文件libabc.so。
1.3 u-boot kenerl rootfs 之間的關系
關于這三者之間的關系:請點擊
總結
以上是生活随笔為你收集整理的嵌入式linux/鸿蒙开发板(IMX6ULL)开发(九)第一个程序背后的C语言知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 简单网络管理协议 SNMP
- 下一篇: vcpkg安装库时异常解决