【韋東山Linux學習】學習筆記(彙總版)

在這裏插入圖片描述

GCC

  • 預處理(.c/.cpp)、編譯()、彙編、鏈接
    在這裏插入圖片描述

使用動態鏈接庫

  • 生成.o文件:arm-linux-gnueabihf-gcc -c -o sub.o sub.c
  • 生成動態鏈接庫:arm-linux-gnueabihf-gcc -shared -o libsub.so sub.o
  • 使用動態鏈接庫生成可執行文件:arm-linux-gnueabihf-gcc -o test main.o -lsub -L ./
    • 注意-lsub之間沒有空格
    • sub庫並沒有位於工具鏈的lib目錄,所以我們需要指定目錄,-L ./指定庫所在的目錄爲當前目錄
  • 注意:使用動態鏈接庫交叉編譯生成的可執行程序,傳輸到板子上時,需要把動態鏈接庫libusb.so放到板子對應的/lib目錄
    • 如果不放到板子對應的/lib目錄,則需要重新運行以下程序(放到/a目錄爲例)
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/a 然後運行./test

使用靜態鏈接庫

  • 生成.o文件:arm-linux-gnueabihf-gcc -c -o sub.o sub.c
  • 生成靜態鏈接庫:ar crs libsub.a sub.o(可以使用多個.o生成靜態庫)
  • 使用靜態鏈接庫生成可執行文件rm-linux-gnueabihf-gcc -o test main.o libsub.a (如果.a不在當`前目錄下,需要指定它的絕對或相對路徑)
  • 注意:靜態鏈接庫不需要放到板子上!!!

GCC編譯一些很有用的選項

  • gcc -E main.c // 查看預處理結果,比如頭文件是哪個
  • gcc -E -dM main.c > 1.txt // 把所有的宏展開,存在1.txt裏
  • gcc -Wp,-MD,abc.dep -c -o main.o main.c // 生成依賴文件abc.dep,後面Makefile會用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章