在大型的嵌入式软件中,一般会分模块的进行开发,最终某个模块的部分会以动态库的方式给出来给需要的人调用,一般有动态库和
静态库的方式,但是静态库的占用内存太大,我们一般用动态库的方式开发。
2.动态库的生成和使用gcc demo.c -o demo.o -fPICgcc -shared demo.o -o libdemo.so //生成 libdemo.so动态库文件mkdir include ; mkdir lib ; mv demo.h include/ ; mv libdemo.so lib/gcc main.c -ldemo -o main -I./include -L./lib//运行可执行文件时需要指定动态库的路径export LD_LIBRARY_PATH=./lib
demo.h头文件
#ifndef _DEMO_H_#define _DEMO_H_#include
demo.c源文件
#include "demo.h"int add1(int a, int b){ return a + b;}int sub1(int a, int b){ return a - b;}int div1(int a, int b){ return a /b;}
main.c源文件
#include "demo.h"int main(int argc, char *argv[]){ int a = 20, b = 4; printf("%s %sn", argv[1], argv[2]); printf("%d + %d = %dn",a, b, add1(a, b)); printf("%d - %d = %dn",a, b, sub1(a, b)); printf("%d / %d = %dn",a, b, div1(a, b)); return 0;}
3.GDB的定义GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。我们在编译程序的时候需要加上 -g 选项,系统会在编译的时候加上调试信息
1.gdb的常用命令打印变量值和类型时,需要运行到某个函数的栈帧上查看