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” {} - 吴秦 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值