蘇嵌實訓 嵌入式 linux C 第 3天

2021-10-07 20:09:09 字數 1490 閱讀 4259

專案名稱

【蘇嵌實訓-嵌入式 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.不能返回上一級目錄並且報錯,查詢...