funs.h:

#ifndef __FUNS_H__
#define __FUNS_H__ void fun1(); #endif

funs.c

#include "funs.h"
#include <stdio.h> void fun1()
{
printf("this is fun1");
}

Makefile

CC = gcc
GXX = g++
LD = ld
AR = ar CFLAGS = -g -O2 -Wall -fpic
LDFLAGS = -shared -fpic
ARFLAGS = -rc OBJS = funs.o LIBNAME = libfuns
SHARE_LIB = $(LIBNAME).so
STATIC_LIB = $(LIBNAME).a .PHONY : all clean all : clean $(SHARE_LIB) $(STATIC_LIB) $(STATIC_LIB) : $(OBJS)
$(AR) $(ARFLAGS) -o $(STATIC_LIB) $(OBJS) $(SHARE_LIB) : $(OBJS)
$(LD) $(LDFLAGS) -o $(SHARE_LIB) $(OBJS) %.o : %.c
$(CC) $(CFLAGS) -c -o $@ $< clean:
rm -f $(OBJS) $(SHARE_LIB) $(STATIC_LIB)

main.c

#include "funs.h"

int main()
{
fun1();
}

编译:

gcc -o main.exe -lfuns -L/home/xt/test_lib main.c

Makefile编译库的更多相关文章

  1. C++---初识《通过g++ / makefile 编译和调用动态库so文件》(ubuntu)

    C++---初识<通过g++ / makefile  编译和调用动态库so文件>(ubuntu) ------------------------目录------------------- ...

  2. gcc与makefile编译 BY 四喜三顺

    gcc编译控制过程:(假设源代码为a.c)(1)源文件到预处理文件:    gcc -E -o a.cxx a.c    a.cxx显示调用哪些头文件(2)生成汇编代码:              g ...

  3. live555学习(一)通读Makefile编译live555

    live555学习(一)通读Makefile编译live555 live555 编译live555 学习开源 live555学习(一)通读Makefile编译live555 前言 live555简介 ...

  4. CMake 工程调用 Makefile 编译项目

    本文主要介绍如何将一个依赖 Makefile 项目(MIDG)移植到 CMake 上. 首先介绍项目文件结构,文件主要由三个目录组成 3rdParty include src 其中,3rdParty ...

  5. 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间

    打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多, ...

  6. Linux Makefile 编译速度的优化【转】

    转自:https://blog.csdn.net/QQ1452008/article/details/51851801 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  7. cocos 3.16 生成预编译库模板

    打开模板功能 不知道什么原因,cocos 3.16关闭了模板功能,因此使用cocos -h命令时,无法显示gen-templates参数. 打开的方式也挺简单,打开tools/cocos2d-cons ...

  8. makefile 编译指定目录

    makefile 编译指定目录 sub1=test1 sub2=test2 subs = sub1 sub2 SUBDIRS =$(foreach i, $(subs), $($(i))) .PHON ...

  9. Android Studio中通过CMake使用NDK并编译自定义库和添加预编译库

    Note:这篇文章是基于Android Studio 3.01版本的,NDK是R16. step1:创建一个包含C++的项目 其他默认就可以了. C++ Standard 指定编译库的环境,其中Too ...

随机推荐

  1. 諾基亞定制的Android系統名為 Z Launcher

    N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個 ...

  2. ASP.NET State Server 服务 sessionState

    在发布ASP.NET网站的时候,出现state server错误:Server Error in '/' Application.----------------------------------- ...

  3. github搭建静态博客

    p { margin-bottom: 0.1in; line-height: 120% } 1. 创建Repository 创建一个与自己github用户名对应的Repository,例如:abc.g ...

  4. NotePad++左侧导航

    NotePad++ 1.  增加左侧导航 a. 通过工具栏里面的“插件”->Plugin Manager-> Shwo Plugin Manager b. 找到Explorer勾选,点击I ...

  5. composer 自动加载原理

    核心当然是php5加入来的_autoload函数,当实例化一个不存在的类时,在报错之前,如果定义了_autoload函数,会进行调用此函数,此函数就可以执行相关的include操作. <?php ...

  6. 著名的sql注入问题-问题的原因分析及总结

    Statement安全漏洞(sql注入问题)问题展示: 首先我的Mysql数据库中有一张users表,如下图所示 /** * 根据用户名查询用户 * @param username 需要查询的用户名 ...

  7. ansible 小试

    安装: pip install ansible 添加配置文件: 配置文件查找顺序 * ANSIBLE_CONFIG (环境变量) * ansible.cfg (当前目录下) * .ansible.cf ...

  8. IDEA +maven+ ContextLoaderListener not find

    tomcat 启动失败:SEVERE: Context [] startup failed due to previous errors 查看pox.xml 有spring-web依赖 查看tomca ...

  9. Spring注解@Resource和@Autowired区别对比

    转载:http://www.cnblogs.com/think-in-java/p/5474740.html @Resource和@Autowired都是做bean的注入时使用,其实@Resource ...

  10. mac终端显示和隐藏隐藏文件的命令

    defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder //显示隐藏文件 defaults write ...