8.19 打造VIM IDE 静态库 动态库制作

vim配置文件位置:

/etc/vim/vimrc

~/.vimrc

打造IDE步骤

,ta   ,nn 测试

使用大型IDE

,da      生成文档说明

,dd      生成函数说明

,jd       跳转函数

,o         关闭其他窗口

,bf 显示已经打开的文件列表

gcc参数的使用:


linux下制作动态库,静态库,下面是文件结构图:



制作静态库,静态库以 .a 结尾:


src里的makefile 生成 静态库文件

  1. libcalc.a:
  2. gcc -c *.c
  3. ar rcs libcalc.a *.o
  4. mv libcalc.a ../lib
  5. clean:
  6. rm -rf *.o
  7. rm -rf libcalc.a
  8. rm -rf ../lib/libcalc.a

main.c的makefile文件  用来链接静态库,执行

  1. all:
  2. gcc main.c -Iinclude lib/libcalc.a -o app// -Iinclude 是指定头文件的地址
  3. clean:
  4. make -C src clean //make -C 是进入到src目录里执行src的 make clean
  5. rm -rf app

另一种方法:

可以      gcc -c main.c -Iinclude                           先生成一个  main.o   文件

然后再  gcc main.o  lib/libcalc.a  -o  app            和静态库一起编译

制作动态库:动态库以.so结尾


src里的makefile 生成动态库文件

  1. libcalc.so:
  2. gcc -fPIC -c *.c
  3. gcc -shared -W -o libcalc.so *.o
  4. mv libcalc.so ../lib

链接动态库生成可执行文件

gcc main.c -Iinclude -L./lib -lcalc -o app

解释:

-L./lib  指定库所在的目录

-lcalc    库的名字为libcalc.so   -l为lib的简写,so可以省略 ,所以 -lcalc

遗憾的是报错:

ldd ./app 一下        发现 动态库没有找到

找到动态库的方法:邢老师教的

这时候需要修改/etc/ld.so.conf,用root权限修改

在里面加上lib的目录就可以了

然后,sudo ldconfig一下,再ldd就可以看到动态库了

接着就可以执行了。

另外一种找到动态库的方法:和朱老师学的


linux不在当前目录下寻找可执行程序,同时也不早当前目录下找so库文件

修改用户配置文件的方法

1  cd

2  vi .bash_profile  (坑爹,Ubuntu下是 .profile)

3  export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:.      这个更坑爹,=两边没有空格

4  保存退出

5  . .bash_profile


静态库错误原因   nm查看库文件


可以用过 nm 指令 查看一个 库 的 符号表,这样就能查看里面的错误

来自为知笔记(Wiz)

时间: 2024-10-19 19:45:28

8.19 打造VIM IDE 静态库 动态库制作的相关文章

C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

目录 0. 引言 1. 交叉编译 2. Cygwin简介 3. 静态库编译及使用 4. 动态库编译及使用 5. MinGW简介 6. CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统.为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近.同时,POSI

静态、动态库制作使用

本质 库是一种可执行代码的二进制格式,可以被载入内存中执行 库分静态库和动态库两种. 一.概念 静态函数库 库的名字一般是libxxx.a 函数库的链接是在编译时期完成 所有相关对象与牵涉的函数库被链接合成一个可执行文件 运行时,与函数库再无瓜葛 动态函数库 库的名字一般是libxxx.so 函数库的链接是在运行时期完成 运行时,在运行环境中必须有相应的库 二.优缺点 静态函数库缺点 文件较大,浪费空间 库或者程序一方改变都使得重新编译 动态函数库优点 文件较小,节省空间. 库具有公用性,内存中

018_C语言静态库动态库

 linux下C语言编程环境 头文件目录:/usr/include/ 库目录:/usr/lib/ 动态库与静态库的区别:在计算机程序源代码需要通过翻译.汇编.链接过程而生成可执行文件,再由加载器加载到内存,两者区别就在于程序加载时链接到相应库的方式不同,程序编译时指定了静态库,编译后可直接运行,而编译时指定动态库时,编译后还要先指定库的路径. 静态库: ar -rs libmy_math.a *.o 生成静态库libmy_math.a ar -t 查看静态库 gcc test.c -L. -

windows库的创建和使用:静态库+动态库

windows库的创建和使用:静态库+动态库 一.静态库的创建和使用 1. 静态库创建 (1)首先创建工程test,测试代码如下: 1) test.h void test_print(); 2) test.cpp #include "test.h" #include <stdio.h> void test_print() { printf("test_print in static lib."); } 3)右击工程test:属性-->配置属性--&

Linux 静态库&amp;动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在

C++开发新版本vs使用旧版本vs编译的静态库动态库

关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++).主要问题: 1. 如果使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成它时所用的同一工具集进行链接.即若在编译静态库时开启了全程序优化,那么编译出的静态库不可移植. 2. 在 Visual Studio 2013 及更低版本中,不能保证使用不同编译器工具集和运行时库版本生成的对象文件 (OBJ).静态库 (LIB).动态库 (DLL) 和可执行文件 (EXE) 之间的

打造VIM IDE(针对C语言开发者)

================================使用vim打造IDE, 针对C语言开发者建议使用gvim================================ 先上两个截图 # 安装ctags1. 下载地址: http://ctags.sourceforge.net/ # 安装cscope1. 下载地址: http://cscope.sourceforge.net/ 2. 修改源码,使其支持递归搜索文件夹的软链接   修改文件: dir.c   修改方式: 替换函数调用

静态库 动态库

1,存在形式 静态库: .a 和 .framework; 动态库: .dylib 和 .framework; 2. 使用 静态库: 链接时,静态库会完整的复制到可执行文件中,被多次使用就会用多份冗余拷贝; -- (核心代码,将MRC打包成静态库,避免切换开发环境) 动态库: 链接时,不复制,程序运行时 由系统动态加载到内存, 供程序调用. [注意]: 静态库并不会将资源打包, 如果静态库中用到了其他的资源,必须手动导入.(一般将资源放入到.bundle文件中) 3. 报错 Undefined s

GCC实现多文件编译,静态库,动态库

一 代码 //add.h int add(int a, int b); //add.c int add(int a, int b) { return a+b; } //main.c #include <stdio.h> #include "add.h" void main() { printf("3 + 2 = %d\n",add(3+2)); } 二 多文件编译 1 生成.o文件 命令:gcc -c add.c main.c 生成:add.o,main