Linux開發中涉及的常識

前言: 自己對Linux開發這一塊完全不瞭解,最近因爲一些項目開始着手瞭解,中間查了很多東西,怕自己不用以後忘了又找不到,就把重點記錄一下,細節請點擊下面提供的參考鏈接!

Linux命令

多用多積累,不懂就查
Linux命令大全(手冊)_Linux常用命令行實例詳解_Linux命令學習手冊

查看Linux下程序所依賴的庫

ldd **** 注:配合grep更加,如 ldd caffe.bin | grep opencv

readelf -a ****|grep library

查看Linux下函數/命令定義的位置

man 1 *** 命令

man 2 *** 系統函數

man 3 *** 庫函數

GCC

我們通常所說的編譯一般分爲四步,預處理、編譯、彙編、鏈接

命令選項

生成動態庫和靜態庫:

  • 生成動態庫:
gcc -c -fPIC test.c -o test.o
gcc -shared test.o libtest.so
# 或者直接一步到位
gcc  -shared -fPIC test.c -o libtest.so
  • 生成靜態庫:
gcc -c test.c -o test.o
ar rcs -o libtest.a test1.o test2.o

Makefile入門

網上資料很多,這提供一些我認爲能快速入門的資料,不會照搬內容到這個博客,遇到一些沒有見過的用法,再去查即可。

參考資料

重點語法

  • 常用變量
    • 自動化變量
      • $@:表示規則中的目標文件集
      • $<: 依賴目標中的第一個目標名字
      • $^ :所有的依賴目標的集合
    • 預設變量
      • CC : C語言編譯程序
      • CXX: C++語言編譯程序
      • CFLAGS: C語言編譯器參數
      • CXXFLAGS : C++語言編譯器參數
  • 常用的函數有:wildcard, patsubst, addprefix
    # 返回當前目錄中所有指定後綴的文件列表
    SRC = $(wildcard *.cpp)
    DEPS = $(wildcard *.h)
    # 通過在SRC中用'.o'替換'.cpp'後綴,將CPP源文件列表更改爲目標文件列表
    OBJ = $(patsubst %.cpp,%.o,$(SRC)) 
    # 添加前綴
    OBJS = $(addprefix $(OBJDIR), $(OBJ))
    

C++和C混合編程

C++調用C函數

  1. 不用.h頭文件,如果要在.cpp中調用.c,則在.cpp聲明部分加上,如下代碼:

    // C++ cpp code
    extern "C"
    {
        int test();//.c中你想要調用的函數
    }
    
  2. 用.h頭文件,可將.h聲明函數部分放入以下格式中:

    	// C++ Header Code
    	#ifdef __cplusplus
    	extern "C" {
    	#endif
    	.......//放在這個部分即可
    	
    	#ifdef __cplusplus
    	}
    	#endif
    

C函數調用C++

// C++ cpp code
extern "C" int foo(){
    ....
}
// 同理也可在C++ Header code中聲明

參考鏈接

3.C++和C混合編程 - 夜行過客 - 博客園
C代碼中如何調用C++ C++中如何調用C - Yogurshine - 博客園
C++項目中的extern “C” {} - 吳秦 - 博客園

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章