arm-linux-gcc生成静态库,gcc链接g++编译生成的静态库和动态库的makefile示例

使用c++开发程序或者库时,将库提供给其他人使用。

然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同。

首先是静态库,以链接g++编译生成的libmylib.a为例子

mylib依赖于pthread,rt,math库,链接时必须放在mylib之后。

同时-Wl,--no-as-needed -ldl添加在末尾是必须的。

arm和x86有些不同,就是arm的gcc不会自动链接数学库math,需要手动添加链接。

CC=arm-linux-gnueabihf-gcc -std=c99

CCLDFLAGS= -L. -lmylib -lstdc++ -pthread -lrt -lm -Wl,--no-as-needed -ldl

#CC=gcc -m32 -std=c99

#CCLDFLAGS=-L. -lmylib -lstdc++ -pthread -lrt -Wl,--no-as-needed -ldl

all:test

test.o:test.c

$(CC) -I../inc/ test.c -c -o test.o

test:test.o libmylib.a

$(CC) test.o -o test $(CCLDFLAGS)

.PHONY: clean

clean:

-rm test test.o -f

gcc链接g++生成的动态库示例:

libmylib.so库,使用g++编译时,静态链接了stdc++库(-static-libstdc++)。

CC=gcc -m32 -std=c99

#CC=arm-linux-gnueabihf-gcc -std=c99

CCLDFLAGS=-lstdc++ -L. -lmylib

Root:root

root.o:test.c

$(CC) -I../inc/ test.c -c -o root.o

root:root.o libmylib.so

$(CC) root.o -o root $(CCLDFLAGS)

.PHONY: clean

clean:

-rm root *.o

[转]Linux下用gcc/g++生成静态库和动态库(Z)

Linux下用gcc/g++生成静态库和动态库(Z) 2012-07-24 16:45:10|  分类: linux |  标签:链接库  linux  g++  gcc  |举报|字号 订阅     ...

Linux下Gcc生成和使用静态库和动态库详解

参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...

【转】Linux编译链接问题----静态库和动态库

Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不 ...

Linux下Gcc生成和使用静态库和动态库详解(转)

一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

【转】Linux下gcc生成和使用静态库和动态库详解

一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...

Linux下GCC生成和使用静态库和动态库【转】

本文转载自:http://www.cppblog.com/deane/articles/165216.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本 ...

VC 静态库与动态库(三)动态库创建与使用_隐式链接

动态库分为二种,一种隐式链接,另一种显示调用.不论哪种动态库,本质都是运行时动态加载 隐式链接:程序运行时,由编译系统自动加载动态库,然后根据程序的引入表进行重定位,当程序退出时自动卸载动态库 显示调 ...

GCC与静态库、动态库

GCC 常用指令 1 man gcc gcc工作流程例如: gcc hello.c 1234567891011121314 //***第一步***gcc -E hello.c >hello.i ...

在Linux下如何使用GCC编译程序、简单生成 静态库及动态库

最近在编写的一个Apache  kafka 的C/C++客户端,,在看他写的 example中,他的编译是用librdkafka++.a和librdkafka.a    静态库编译的,,,而我们这 ...

随机推荐

AutoMapper(二)

返回总目录 首先,先创建一个控制台项目,引用AutoMapper程序集,创建三个类User,UserDto,UserMappingProfile,下面的知识点的演示都以此项目为基础,代码分别如下: n ...

js省市联动

你可能感兴趣的:(arm-linux-gcc生成静态库,gcc链接g++编译生成的静态库和动态库的makefile示例)