專案名稱
【蘇嵌實訓-嵌入式 linux c 第 3天】
今日進度以及任務
學習linux下常用的開發工具
任務完成情況
已完成本日開發**現的問題彙總
對gdb運用不熟悉
本日未解決問題
如何使程式在編譯的過程中不進行優化
本日開發收穫
linux中靜態和動態庫,gdb,makefile
1、編譯器**優化分別優化了哪些?
第一級:**調整
語句調整,用彙編重寫、指令調整、換一種語言實現、換乙個編譯器、迴圈展開、引數傳遞優化等。
第二級:新的視角
從不同的角度思考面對的問題,使用適合於問題的的演算法。
第**:表驅動狀態機
把解決乙個問題的演算法看作乙個機器,它有一些可變的狀態、有一些記憶、有一些按狀態執行的規則,然後一些輸入驅動這個機器運轉;這就是第**要求的思考優化問題的切入點,也就是尋找一部機器,使它執行經過的路徑最短。
2.總結gcc靜態庫和動態庫的製作
靜態:(1) 進入libtest/lib目錄,執行命令:
gcc -c -i…/include hello.c
該命令生成目標檔案hello.o,注意:引數-i新增標頭檔案搜尋目錄,這裡因為hello.c中有#include 「hello.h」,hello.h在libtest/include目錄中,這裡需要指定該目錄通知gcc,否則出現錯誤提示「找不到標頭檔案hello.h」。
這一步將在libtest/lib目錄中生成乙個hello.o檔案。
(2) 在libtest/lib目錄,執行命令:
ar rc libhello.ahello.o
該命令將hello.o新增到靜態庫檔案libhello.a,ar命令就是用來建立、修改庫的,也可以從庫中提出單個模組,引數r表示在庫中插入或者替換模組,c表示建立乙個庫
這一步將在libtest/lib目錄中生成乙個libhello.a檔案。
(3) 進入libtest/src目錄,執行命令
動態:a.將.c生成.o檔案(生成與位置無關的** -fpic)
gcc -c add.c -o add.o -fpic
objdump -ds mymath >out objdump反彙編
b.使用gcc -shared製作動態庫
gcc -shared -o lib庫名.so add.o sub.o
c.編譯可執行程式時指定所使用的動態庫。-l:指定庫名,-l:指定庫路徑。去掉lib和.so
3、總結cmake用法;
在 linux 平台下使用 cmake 生成 makefile 並編譯的流程如下:
編寫 cmake 配置檔案 cmakelists.txt 。
執行命令 cmake path 或者 ccmake path 生成 makefile(ccmake 和 cmake 的區別在於前者提供了乙個互動式的介面)。其中, path 是 cmakelists.txt 所在的目錄。
使用 make 命令進行編譯。
蘇嵌實訓 嵌入式 linux C 第 3 天
專案名稱 蘇嵌實訓 嵌入式 linux c 第 3 天 今日進度以及任務嵌入式c實戰詳解1 開發流程 編碼規範 本日任務完成情況按時完成了老師課後布置的程式設計題 本日開發 現的問題彙總無 本日未解決問題1 老師課上說64位作業系統指標長度應該是8個位元組,32位作業系統指標長度為4個位元組,但是我...
蘇嵌實訓 嵌入式 LinuxC 第 3 天
專案名稱 蘇嵌實訓 嵌入式 linuxc 第 3 天 今日進度以及任務 c語言的基礎 c語言的特點c語言標準資料型別運算子基本控制語句 本日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 今天自己沒寫很多 自己感覺還可以 感覺自己c還得加強 多看點書 本日未解決問題 感覺自己c還得加強 多...
蘇嵌實訓 嵌入式 linux C 第 1 天
專案名稱 蘇嵌實訓 嵌入式 linux c 第 1 天 今日進度以及任務嵌入式開發概述及嵌入式linux c專案演示 嵌入式環境安裝與使用 本日任務完成情況已完成課上布置的7個小題作業,並把課上的筆記做了相應整理。本日開發 現的問題彙總1 使用目錄指令的時候用 cd.不能返回上一級目錄並且報錯,查詢...