库本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行 Linux下库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小. 库文件是如何产生的在linux下 静态库的后缀是.a,它的产生分两步 Step1 由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表 Step2 a…
一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) -o 可执行文件名 注意两点:1. gcc永远在首,2. 库永远在依赖文件(*.c/*.cpp/*.o)之后: Q:gcc编译时链接库选项问题: gcc -o test -I. str_out.h -L. -lstr_out main.c: 提示…
windows库的创建和使用:静态库+动态库   一.静态库的创建和使用 1. 静态库创建 (1)首先创建projecttest,測试代码例如以下: 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)右击projectt…
目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统.为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近.同时,POSIX标准也是Li…
1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在…
#1. 如何使用静态库 制作静态库 (1)gcc *.c -c -I../include得到o文件 (2) ar rcs libMyTest.a *.o 将所有.o文件打包为静态库,r将文件插入静态库中,c创建静态库,不管库是否存在,s写入一个目标文件索引到库中,或者更新一个存在的目标文件索引.mv libMyTest.a ../lib 将静态库文件放置lib文件夹下nm libMyTest.a 查看库中包含的函数等信息 第一种方法:gcc + 源文件 + -L 静态库路径 + -l静态库名 +…
前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across metamethod/C-call boundary"的错误(据悉主线程中调用yield也会如此). 于是就想使用5.2以上的版本试试;windows下没有5.2以上的版本,又不愿意使用VS编译出lua.exe;就在网上搜索下了关于使用命令行生成lua的静态库.动态库.lua.exe和luac.exe资…
JNI_Android项目中调用.so动态库 2014年6月3日 JNI学习 參考:http://blog.sina.com.cn/s/blog_4298002e01013zk8.html 上一篇笔者介绍了怎样使用Java代码调用DLL动态库中的C/C++方法.似乎已经是非常久曾经的做法了.遇到的错误笔者还未找到解决方式.但动态库着实是找到的,仅仅是无法调用对应的方法.本篇博客来介绍一下怎样在Android项目其中使用NDK生成.so动态链接库.并在程序中使用. 1. 在Eclipse中创建项目…
1.在VC环境中建立新工程,创建32位动态库(Win32 Dynamic-Link Library)  -> A simple DLL project 2.在工程中可加入别的动态库,在工程菜单中选择设置,在Project Settings选项中选择link,然后在 对象/库模块中加入其它动态库 3.编辑程序主体,新建源文件,并加入必须的头文件和功能函数. #include "stdafx.h" #include "xxxx.h"     //动态库相关的头文件…
关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++).主要问题: 1. 如果使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成它时所用的同一工具集进行链接.即若在编译静态库时开启了全程序优化,那么编译出的静态库不可移植. 2. 在 Visual Studio 2013 及更低版本中,不能保证使用不同编译器工具集和运行时库版本生成的对象文件 (OBJ).静态库 (LIB).动态库 (DLL) 和可执行文件 (EXE) 之间的…