MakeFile库链接问题 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 45.45%
Bbs5
本版专家分:3209
Blank
红花 2018年4月 硬件/嵌入开发大版内专家分月排行榜第一
Bbs1
本版专家分:0
Bbs1
本版专家分:70
Makefile中库链接问题
这个很短 LIBS = -L dir -llibname1 -llibname2  -llibname3 dir 是库所在的路径 libname 是库的名字 注意: 库的顺序,<em>makefile</em>先识别后面的库,是堆栈的思想
使用Makefile链接so库文件
初学Makefile,权当是笔记,希望对别人有些帮助吧。 ------------------------------------------------------------------------------------ 本次例子目录结构如下: 目录说明: lib目录是我自己写的一个so库文件,名为libA.so,很简单,里面的内容截图如下: -----------
makefile 指定库的路径
<em>makefile</em> 指定库的路径 现有libmad交叉编译后安装于:/home/andy/share/libmad_install目录 现在应用程序miniplayer位于:/home/andy/share/mini_player目录 mini_player中的<em>makefile</em>里,怎么指定libmad库和mad.h头文件的路径呢? 指定 头文件用  -I /home/andy/sh
c++ 编译链接makefile思路整理
长虹剑自己的一些经验总结,具体请自行根据实际情况决定。 (未完且待细节补充 ) - 2016-10-25 补充了一个<em>makefile</em>模板 - 2016-10-27 补充了cmake及cmake生成nmake,整理了windows下有关编译的目录,有助于理解vs的x86和x64编译过程。 - 2017-6-7 加入了一个gcc选项,关于库的依赖顺序前言无论在windows上还是linux上我
Linux下Makefile中动态链接库和静态链接库的生成与调用
背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译、<em>链接</em>、生成可执行文件,从而实现了移植的过程。平台是Toradex的Apalis TK1,三千多元,买回来我就后悔了,全是英文资料,还各种Bug,迟迟无法上手。早知如此,还不如直接买Nvidia的Jetson TK1呢。书归正传,今天写一下Makefile文件中,动态链
《调用opencv库的简单makefile示例》
SRCS = $(wildcard *.cpp) # wildcard把 指定目录 ./ 下的所有后缀是cpp的文件全部展开。 OBJS = $(SRCS:.cpp = .o) # OBJS将$(SRCS)下的.cpp文件转化为.o文件 CXX = g++ # 代表所使用的编译器 INCLUDES = -I/usr/local/include/ope
ANDROID NDK makefile 链接静态库的方法
[NDK] Android.mk Android NDK的 <em>makefile</em>在r4及r5b的寫法有點不一樣 --------------------------For r4 ------------------------ LOCAL_PATH:= $(ca
链接动态库静态库,且需先编译库的makefile
本示例演示了需<em>链接</em>动态库静态库,且需要先编译动态库静态库的<em>makefile</em>编写方式,<em>makefile</em>文件内部有详细的注释,目录下也有介绍文档,希望大家在遇到这种情况时,把本示例稍作修改,就可以运行起来
makefile 中指定程序运行时加载的库文件路径
<em>makefile</em> 中指定程序运行时加载的库文件路径
gcc 使用静态库文件 链接库文件 .a makefile .so
上篇文章说了如何生成静态库文件:http://blog.csdn.net/lanmanck/archive/2009/10/12/4659161.aspx这里也有篇文章说的很好:http://wickyl.javaeye.com/blog/137460 这里提一下使用方法:下面的例子中,库文件位于一个文件夹libxxx,而测试文件main.c和文件夹在同一个目录。Makefil
Make.am中生成.la动态库的同时要链接.a静态库的问题
最近做项目的过程中间需要在生成.la动态库的同时<em>链接</em>libnet.a静态库,本来正确的写法应该是   libcharon_la_LIBADD += /usr/lib/libnet.a   但是编译的时候报错: /usr/bin/ld: /usr/lib/libnet.a(libnet_build_ip.o): relocation R_X86_64_32 against `a local
makefile与动态链接库案例分析——动态库链接动态库
背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主工程dds(调度数据服务器)。 有源代码,打算直接编译Libmdpha.so.xxx,加入主工程dds。复制动态库到主工程相关路径,并改<em>makefile</em>,主要加复制命令和建立软连接的命令,库名注意统一: 引用库中加入Libmdpha 同时加         cp -f $(INTERFACES_
Makefile 中动态链接库的顺序
Makefile 中编译选项的位置可以随意变化,但是动态<em>链接</em>库之间的相对位置有讲究。 比如在编译一个项目时遇到错误如下: /usr/bin/ld: /usr/local/lib/libgrpc++_reflection.so: undefined reference to symbol '_ZN6google8protobuf8internal16...
QtEmbedded-4.8.6-arm 编译选择从 动态库变化到静态库 时,生成的Makefile链接库路径下如果有动态库和静态库,优先选择动态库编译应用
<em>问题</em>:QtEmbedded-4.8.6-arm 编译选择从 动态库到静态库 时,发现的一个疑惑:,生成的Makefile<em>链接</em>库路径下如果有动态库和静态库,优先选择动态库编译应用 具体现象: 我最初是使用动态库的 QtEmbedded-4.8.6-arm (编译器选择时,是 ./configure  -release -shared  ) 变化成静态库的 QtEmbedded-4.8.6-ar...
gcc MakeFile文件引用静态库与动态库的区别
gcc MakeFile文件引用静态库与动态库的区别<em>makefile</em>文件引用库路径,如下: LIB_PATH += -L路径 <em>makefile</em>文件引用静态库/动态库,如下: LIBS += -l库 (这的库是去掉lib,.a, .so剩余部分,如libaaa.so 这写LIBS += -laaa 如libbbb.a 这写LIBS += -lbbb)引用动态库与引用静态库区别,编译没有区别,运行
通用Makefile的编写和在项目工程中使用Makefile(包括动态库、静态库的链接、整个工程联合编译)
一、通用Makefile文件的编写        (1)、什么是通用Makefile?                     这里的通用Makefile指的是它既能编译可执行文件、也能编译动态<em>链接</em>库、又能编译静态库,只需要更改很少的内容即可。        (2)、写一个通用Makefile #-------------------------配置区域------
Makefile 编译动态库文件及链接动态库
原文转自 :http://www.cnblogs.com/ljtknowns/p/5647793.html 文件目录结构如下 1 dynamiclibapp.c 2 Makefile 3 comm/inc/apue.h 4 comm/errorhandle.c 5 dynamiclib/Makefile 6 dynamiclib/dynamiclib_add.c 7 d
makefile 强制使用静态链接
方法1-static : 所有的库文件使用静态库<em>链接</em>g++ -static -ltest -lfoo 方法 2:这里有2个命令介绍一下:–Bdynamic : 用于在各种可能的情况下为共享动态绑定设置首选项。-Bstatic : 将绑定只限制于静态库。当库的静态和动态版本都可用时,使用这2个选项在命令行首选项间进行切换。 注意使用这2个命令需要配合 -Wl 选项一个例子g++ -Wl,-Bsta
gcc链接g++编译生成的静态库和动态库的makefile示例
使用c++开发程序或者库时,将库提供给其他人使用。 然而使用者是使用c开发的程序,<em>链接</em>g++编译生成的库时,于<em>链接</em>gcc生成的库,有所不同。 首先是静态库,以<em>链接</em>g++编译生成的libmylib.a为例子 mylib依赖于pthread,rt,math库,<em>链接</em>时必须放在mylib之后。 同时-Wl,--no-as-needed -ldl添加在末尾是必须的。 arm和x86有些不同,就是a
进行编译qt-x11库出现的问题
如果用gmake无法进行编译,用make。 如果在编译过程中出现  (致命错误): X11/Xlib.h:没有那个文件或目录 是缺少对应的库 用命令 sudo apt-get install libx11-dev 就可以解决了...
makefile中指定动态库路径
我们把一个项目做到一个文件夹下面,以后要用的就拷贝整个文件夹到服务器上就好了,现在涉及到了动态库的<em>问题</em>,会在服务器上编辑,但不在每台服务器上都加上新增的动态库路径。所以想在<em>makefile</em>中修改使其更傻瓜。   gcc中的rpath用法: -Wl,-rpath,dir 多个dir之间用冒号分隔: -Wl,-rpath,dir1:dir2:...:dirN     对于我们的项目: L
makefile链接使用eigen库
需要进行矩阵运算时,eigen是一个非常有效的库。linux下eigen安装可以通过apt install的形式或者到官网下载源码编译的形式安装(最后要sudo make install)。以一个小例子为例: #include #include using namespace std; using namespace Eigen; int main(int argc, char **ar
几个常用makefile模板(动态库、静态库、可执行程序)
1、编译动态库 ############################################################# # Makefile for shared library. # 编译动态<em>链接</em>库 ############################################################# ...
如何自己写makefile调用相关库进行编译ffmpeg程序
环境:CentOS Linux release 7.3.1611 (Core) 一、官方下载ffmpeg,并编译安装。 安装libx264 git clone http://git.videolan.org/git/x264.git ./configure --enable-static --enable-shared --disable-asm Make Make install ...
makefile 生成/使用静态库
// puls.h int my_puls(int x,int y);   // puls.cc int my_puls(int x,int y) { return x + y; }   // puls_lib_test.cc #include"puls.h" #include int main() { int puls_res = my_puls(3,4); printf
linux 库的依赖和链接的顺序
linux库的依赖和<em>链接</em>先后顺序
makefile静态库 动态库
动态库调用另外一个静态库: CC=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)ld CFLAGS:=-fPIC LDFLAGS:=-shared -fpic SOURCE:=$(wildcard *.cpp) OBJS:=$(patsubst %.cpp,%.o,$(SOURCE)) TARGET_LIB:=liblive.so INC = -I../libr
最简单 的入门且最直观的Makefile和.so文件编译链接使用方法
1、带main函数的.cpp文件:主要添加头问价“a.h” #include #include "a.h" using namespace std; int main(int argc,char **argv) { cout }  2、生产.so的a.cpp文件内容: #include using namespace std; int add(int
Ubuntu下程序的编译和链接过程和openCV的makefile文件
简述 在windows下编程,可能一个F5就能让代码跑起来,那是因为IDE(比如VS2103等)已经帮你做好了后台的编译和<em>链接</em>过程。当在Ubuntu下让代码跑起来,就要自己去理解代码的编译和<em>链接</em>过程。 下面说说什么是编译,什么是<em>链接</em>: 编译就是将源文件通过Complier,生成中间文件,在windows下,中间文件就是.obj 文件,在Ubuntu下,就是.o文件,即 Object...
在查看makefile文件时候关于pthread随笔
libCardApp.so:CFLAGS = -g -rdynamic libCardApp.so: DES.cpp.o TOOLS.cpp.o   CARDCMD.cpp.o SAM.cpp.o CARD.cpp.o  CARD1.cpp.o CARD2.cpp.o CARD3.cpp.o CARD4.cpp.o CARD5.cpp.o CARD6.cpp.o CARD7.cpp.o CARD
makefile中编译静态链接
目录结构是, 上面的<em>makefile</em>是子文件夹中的<em>makefile</em>,下面的是外层<em>makefile</em>,编译的话外层的目标依赖内层文件夹的静态<em>链接</em>库。 上层文件夹中的<em>makefile</em>内容如下: O_FILES = MQTTConnectClient.o \  MQTTConnectServer.o \  MQTTDeserializePublish.o \  MQTTFo
编译基础——如何用g++编译自己的库,以及一个简单的makefile文件
本文介绍如何用g++编译自己的库,以及一个简单的<em>makefile</em>文件。
编译多个可执行程序,需链接动态库静态库,且需先编译库,并且库与库之间存在依赖关系的makefile
本示例演示了编译多个可执行程序,需<em>链接</em>动态库,静态库,且需先编译库,并且库与库之间存在依赖关系的<em>makefile</em>的编写方式,<em>makefile</em>文件内部有详细的注释,目录下也有介绍文档,请务必按照里面的步骤操作,保证可以运行成功
实战总结----用Makefile编译生成动态链接库.so
写在前面: 1、在实际项目开发当中,库文件用的很多,尤其是在不同的 企业之间为了防止源码公开,都是以库的形式提供给对方,然后提供必要的头文件就可以了。本文主要介绍Linux下和Windows下的库的格式,以及动态<em>链接</em>库和静态<em>链接</em>库的作用,Linux下如何用Makefile编译制作动态<em>链接</em>库的方法。 2、Makefile博大精深,在平时用的不多,所以本文也是对刚刚用过的Makefile简单使用的...
Linux学习笔记——例说makefile 增加系统共享库
0.前言     从学习C语言开始就慢慢开始接触<em>makefile</em>,查阅了很多的<em>makefile</em>的资料但总感觉没有真正掌握<em>makefile</em>,如果自己动手写一个<em>makefile</em>总觉得非常吃力。所以特意借助博客总结<em>makefile</em>的相关知识,通过例子说明<em>makefile</em>的具体用法。     例说<em>makefile</em>大致分为4个部分     1.只有单个C文件     2.含有多个C文件
makefile---使用共享库文件so
环境:Vmware Workstation;CentOS-6.4-x86_64 说明: 1、作用:告诉gcc编译器要在哪里<em>链接</em>,<em>链接</em>那个文件。 2、gcc在<em>链接</em>的时候要加-l参数和-L参数 3、-l:告诉gcc需要<em>链接</em>指定的共享库文件 -l后面跟的共享库文件的名字 如:共享库文件的名字如果是libmyso.so,那么在写的时候,就要把前面的lib和后面的.so去掉,得到myso
makefile中库的顺序问题
在<em>makefile</em>中,比如:LIBS=-L$(APPL_LIB) -labc -lxyz 这里的库abc和xyz的顺序有什么规定么?   1.如果abc依赖xyz,就把abc放在前面 <em>链接</em>时会把abc所需要的符号找出来,然后继续往后走,找这些符号有没有出现 ,如果走到末尾还没出现,就报错 2.如果abc和xyz互相依赖呢?尝试:  -labc -lxyz -labc 3. 静态连
Linux Makefile 静态库动态库应用实例
在Linux系统中: 静态库的创建 gcc -c filen.c ar -cr libname.a file1.o file2.o ... ar:静态函数库创建的命令 -c :create的意思 -r :replace的意思,表示当前插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误信息,并不替换其他同名的模块。默认的情况下,新的成员增加在库德...
Makefile应用之动态链接
http://www.cnblogs.com/huochangjun/archive/2012/09/04/2670539.html Lunix下生成动态库文件:          之前已经介绍了.o,.a,.so文件类型的含义,.so后缀的文件是动态库文件。         下面介绍在编译过程中<em>链接</em>到动态库文件的方法: 一.   源码文件: so_test.h: void tes
Makefile中指定链接地址的方式
两种: 第一种是指定连接器LD的flag 如:arm-linux-ld -Ttext 0x0 -o led.elf $^(这句表示使用依赖编译<em>链接</em>生成led.elf目标文件,编译<em>链接</em>工具为arm-linux-ld),<em>链接</em>地址依靠<em>链接</em>器的flag(Ttext)来指定,为0 第二种:依靠<em>链接</em>脚本来指定 如:arm-linux-ld -Tlink.lds -o led.elf $^,这句功能同上...
Makefile生成器,使用C++和Boost实现
今天学习了一下Boost的文件遍历功能,同时发现GNU编译器有-MM选项,可以自动生成依赖关系,于是利用以上两点写了一个Makefile生成器。可以生成一般的单个可执行文件的Makefile,使用的是Windows+Mingw+boost环境。如果使用Linux,只需在程序中的两个System系统调用处和clean标签生成处将del 改成rm相关操作就好了。 下面是源代码: makemake.
Sqlite3通过Makefile编译成动态链接
TARGET_LIB:=libsqlite3.so LIBS := -lpthread -ldl CFLAGS := -g -Wall -shared -fPIC -I. $(LIBS) CC := mipsel-openwrt-linux-gcc #交叉编译下的编译路径 STRIP := mipsel-openwrt-linux-strip OBJ := sqlite3.o all
Makefile.am链接openCV库的写法
6 INCLUDES = `pkg-config opencv --cflags` -I./ 17 bin_PROGRAMS+=SegRecogServerDeme 18 SegRecogServerDeme_SOURCES=util.h util.cpp t_encoding.hpp SegRecogLogic.h  SegRecogLogicDeme.cpp SegRecogServerDem...
makefile 编译第三方库
CSND已永久停更,最新版唯一来源点击下面<em>链接</em>跳转: 语音增强和识别网页书 以前在编写跨平台编译框架时,要引用第三方库,这里的例子实现了下载和编译第三方库,正适合用~! ``` FFTW = fftw-3.3.4 all: .deps fftw decode ops utils .deps:     sudo apt-get install libsamplerate-dev -y  ...
linux编译动态库和静态库的makefile示例
根据GenDll.cpp文件,分别生成动态库.so和静态库.a文件,需要依赖的外部库为opencv。1. 静态库的生成<em>makefile</em>命令的简介可参考:跟我一起写 Makefile。使用ar命令生成.a文件,可参考:Linux下动态库(.so)和静态库(.a)# 1、准备工作,编译方式、目标文件名、依赖库路径的定义。 CC = g++ CFLAGS := -Wall -O3 -std=c++0x
linux 动态库的编译、调用,(用Makefile编译)
我们在做一个C/C++项目的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。 这就是动态库,当然也包括静态库。今天聊聊动态库的生成和调用方法。 动态库的生成 首先,创建 动态库 源文件 test_1.h ...
学习 uboot 之一makefile链接脚本分析
下面我们正式开始讲解Uboot的启动代码,由uboot的<em>链接</em>脚本能够知道uboot<em>链接</em>时放在代码最开头的是CPU/$(CPUDIR)/start.S 在正式看代码之前,我们需要了解S3C2440的stepping stone机制,即NAND FLASH启动时,S3C2440会利用自己内部的控制器将NAND FLASH前4K的内容拷贝到片内的RAM中并将片内RAM映射到0地址开始的地方。 #in
Theos--定制工程文件(MakeFile篇)
介绍 MakeFile文件指定工程用到的文件、框架、库等信息,将整个过程进行自动化。 theos中.mk的说明这里我就拿theos生成的模板中的 MakeFile文件进行对应的介绍、include theos/<em>makefile</em>s/common.mk #固定写法TWEAK_NAME = iOSREProject #项目创建时候的项目名称 iOSREProject_FILES = Tweak.
关于linux文件下库的链接问题 openssl pcre
在linux下安装完一些第三方库,需要<em>链接</em>库的时候,一般安装的库都在/usr/lib或者/usr/lib64下面,一般是以.so文件存在的。 以下是一些常出现的<em>问题</em>,首先是如何<em>链接</em>到这些库,如<em>链接</em>pcre库的时候和头文件一般如下 g++ xxx.cpp -I/usr/local/include -L/usr/local/lib -lpcre -g -o xxx 其中lpcre代表libpc
使用Automake生成Makefile及动态库和静态库的创建
使用Automake创建和使用静态库1. 目录结构如下:example|——src 目录(存放源代码文件) |——hello.c|——lib 目录(存放用来生成库的文件) |——test.c 用来生成静态库libhello.a|——include 目录(存放程序中使用的头文件) |——
Linux中的静态库、共享库、头文件及makefile文件举例
库:是一组预先编译好的函数的集合,linux中标准系统库文件一般存储在/lib和/usr/lib目录中 静态库:在程序编译过程中,就被<em>链接</em>到了程序编写者所写的源代码中,静态库以.a结束。 共享库:在程序运行时载入,编译时只需说明所需要的共享库文件即可。共享库以.so接受。 头文件:用于保存程序的声明。 <em>makefile</em>文件:<em>makefile</em>带来的好处就是——“自动化编译”,一旦写好各文件的
Windows makefile 多个引用库文件路径配置
Windows <em>makefile</em> 多路径配置 由LIB参数控制。 用分号";"分割多个路径,如: TOOL32 = D:\Program Files\VS2003 LIB= $(TOOL32)\lib;$(TOOL32)\PlatformSDK\Lib 路径中如果有空格导致无法找到文件,则试试加上双引号"",如: LIB= "$(TOOL32)\lib";"$(TOOL
linux 中-ldl和-lpthread 是什么意思?
在《Using the GNU Compiler Collection》gcc 4.30 中关于-lpthread的描述如下: -pthread       Add support for multithreading using the POSIX threads library. This option              sets flags for both the prep
makefile指定头文件和库出错的那点破事
某模块提供了test.h头文件和libtest.a库, 供外部代码调用: 1. 如果在代码中包含了某头文件test.h, 但在makefle中没有指定头文件路径/或者头文件根本不存在, 会出现编译错误, 会提示缺少test.h. 2. 如果包含了test.h头文件,且指定了头文件路径, 且指定libtest.a库, 但实际此库并不存在(比如没有提前编译出来), 会出现编译错误, 提示缺少 cannot find -ltest 3.如果包含了头文件,且指定了头文件路径,
blas-lapack在windows下的ifort-makefile
blas-lapack在windows下的intel visual fortran编译器的<em>makefile</em>
一点一点学写Makefile(3)-增加第三方库和头文件
我们在写代码的时候不一定都是有自己来完成,一个工程中会大量使用一些比较优秀的动态库、静态库等,我们在使用这些库完成所有的代码后,需要在编译的时候将这些库使用的头文件添加到我们的工程上,将他的库文件也添加到我们的工程中,接下来我们就来看一下怎么来添加。 我们在项目中很少将第三方库与我们自己的代码放到同一个目录中,而是有一些约定俗成的存放方法: 如上图,我们会将第三方库的头文件放到includ
Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
环境:Ubuntu-13.10  32位(虚拟机)、gcc4.8.1          首先创建一个test_<em>makefile</em>_gcc文件夹,此test_<em>makefile</em>_gcc文件夹下包括:src文件夹用于存放源文件; include文件夹用于存放头文件;bin文件夹用于存放生成的动态库.so文件;lib文件夹用于存放生成的静态库.a文件;project_<em>makefile</em>文件夹存放此工程的ma...
[iOS]Makefile交叉编译静态库TA-lib
为了使Cocoa-Charts支持客户端数据计算,需要为Cocoa-Charts增加技术分析数据计算功能,目前比较通用的是TA-lib,但是TA-lib没有提供iOS版本的静态库文件,因此需要在X86平台上交叉编译适用于iPhone模拟器和iPhone真机的TA-lib静态库,用于调试和开发iOS应用程序,使TA-lib支持ARMv7 ARMv7s i386等系统架构的多种iPhone机型或模拟器
linux .so动态库makefile的嵌套调用
1、动态库的编译 下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:test.h,三个.c文件:test_a.c、 test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。 test.h:  #include   "stdio.h" void test_a(); void test_b(); void test_c();   test
make,makefile和程序的编译链接过程
一,Linux下程序运行过程 1,在一个目录下新建三个文件:main.c hello.c hello.h分别编写他们如下图: 2,想要让这个程序执行起来,就必须对上面的三个文件分别进行编译<em>链接</em>执行,如下图: 通过上面这个过程。我们可以大致总结一下gcc编译器把目标文件经过预处理,编译,汇编,<em>链接</em>生成可执行文件的过程和命令: (1)预处理(宏替换,删除注释和多余的空白字
linux 编译 依赖静态库的静态库问题
前言---------------------------------- 最近工作中遇到一个linux编译<em>问题</em>,其实是小<em>问题</em>,但经验不足,弄了2天,特做记录。 背景--------------------------------- 这次是做一个新的项目,项目软件编译架构如下图: |-----libm1.a          |-----libn1.a main
makefile 编写,编译动态库,编译静态库
1 我 CROSS_COMPILE= CC = $(CROSS_COMPILE)gcc STRIP = $(CROSS_COMPILE)strip CFLAG = -Wall -W -Os -g -o LIBS := -L../lib -lfcgi LIBS += -L../lib -ltinyxml LIBS += -L../lib -lOnvif -lpthread LIBS +=
linux下静态库、动态库编译及makefile书写
库文件源码为:app.c使用库文件源码为:main.c静态<em>链接</em>库生成:gcc -c app.car rcs libtest.a app.o静态库文件名的命名规范是以lib为前缀,紧接着跟静态库名,扩展名为.a。例如:我们要生成名为test的静态库,则静态库文件名就是libtest.a。参数c: 选项意为只编译不<em>链接</em>。参数r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。如...
makefile编译生成.a文件(linux静态库),并编译进可执行文件中
文件列表: 代码文件/* 下列代码保存到 plus.cpp */int my_plus(int x,int y) { return x + y; } /* 下列代码保存到 minus.cpp */ int my_minus(int x,int y) { return x - y; } /* 下列代码保存到 my_math.h */ int my_pl
gtest(google test)编译(静态库*.a和动态库*.so)与使用
gtest测试框架是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)为编写C++测试而生成的。它是基于xUnit架构的测试框架,支持自动发现测试,丰富的断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。。
linux下静动态库Makefile的编写和应用
前言 在linux下做项目,难免会有对库的封装,需要把自己编写的程序编译成静动态库给其他人提供接口,这时候最重要的就是Makefile的编写。 一、动态库Makefile的编写和使用 1、动态<em>链接</em> 连接器在<em>链接</em>时仅仅建立与所需库函数的之间的<em>链接</em>关系,在程序运行时才将所需资源调入可执行程序,也就是你在执行应用程序的时候一定要把你编译后的.so配置到你执行程序环境下,直接拷贝到/lib
静态库的链接顺序
今天工作中遇到了一个很诡异的<em>问题</em>: 项目中, a.c和b.c编译出的obj先打包成静态库c.a, 再和另外一个d.a以及main.c编译出的obj<em>链接</em>成最后的bin文件. a.c中有private_init()和private_read()两个函数, 其中private_init()是个空函数, private_read()则在d.a中被调用. 出现的现象是这样: 如果我main.c中
Mac系统中makefile中如何使用【.dylib】动态链接
gcc -shared -fpic \ -L/Library/Frameworks/Python.framework/Versions/2.7/lib \ -lpython2.7 \ -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr
linux环境下同时使用静态库、动态库编译程序
1. 应用场景因某些原因,需要同时使用静态库及动态库编译代码。 在这里我需要静态<em>链接</em>的是zbarlib,动态<em>链接</em>的是opencv库。 经过一个下午的艰苦奋斗,分享一下网上的解决方法以及最终导致不成功的原因所在。2.Makfile实例CXX=g++CFLAGS += -I${PWD}/../zbar/include CFLAGS += -I${PWD}/../opencv/includeLDFLA
CMake 链接第三方的库 和 添加C++11的支持
这里的例子, 是<em>链接</em>libev , 如下: 我的CMake 版本是3.10 # CMake 最低版本号要求 cmake_minimum_required (VERSION 2.8) # 项目信息 project (server) # 查找当前目录下的所有源文件 # 并将名称保存到 DIR_SRCS 变量 aux_source_directory(. DIR_SRCS) # 添加第三方
MakeFile库路径搜索
交叉编译的时候不能使用本地(i686机器,即PC机器,研发机器)机器上的库,但是在做编译<em>链接</em>的时候默认的是使用本地库,即/usr/lib,/lib两个目录。因此,在交叉编译的时候,要采取一些方法使得在编译<em>链接</em>的时候找到需要的库。  首先,要知道:编译的时候只需要头文档,真正实际的库文档在<em>链接</em>的时候用到。 (这是我的理解,假如有不对的地方,敬请网上各位大侠指教) 然后,讲讲如何在交叉编译<em>链接</em>的时候
Makefile.am文件的实例讲解
Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./configure的时候,就将Makefile.in文件自动生成Makefile文件了。所以Makefile.am文件是比Makefile文件更高的抽象。 下面我根据自己的工作中的一些应用,来讨论Makefile.am的编
Linux makefile中的编译链接选项
-I是编译选项(准确的是说是预处理选项CFLAGS或者CPPFLAGS中指定),用来指定预处理时查找头文件的范围的。 -l是<em>链接</em>选项(LDFLAGS中指定),用来指定<em>链接</em>额外的库(譬如我们用到了数学函数,就用-lm,<em>链接</em>器就会去<em>链接</em>libm.so;那么我们使用了libjpeg,对应的库名字就叫libjpeg.so,就需要用-ljpeg选项去<em>链接</em>) -L是<em>链接</em>选项(LDFLAGS中指定),用来告诉链...
Makefile自动生成依赖文件,并自动编译
因为经常要用到<em>makefile</em>编译,每次都为头文件的依赖关系头痛,所以这次费了两天时间开发了一个通用的<em>makefile</em>,它可以自动生成依赖文件,并编译,当然你要按文件里面的说明来填充一些中间文件名. 代码如下: #自动依赖项(*.d),并编译生成文件 #编译选项 LDFLAGS = -Wall #-ggdb #库目录 DIR = /usr/local/arm/3.3/lib
Makefile 编译与链接选项及CFLAGS与LDFLAGS示例说明
最近看了<em>makefile</em>的手册之后,发现还是不知道怎么写<em>makefile</em>,而且就连看也看的是云里雾里,就我现在工作当中看到的一些<em>makefile</em>文件,只能看个大概的意思,一旦涉及到文件添加、静态库、动态库等增加、删除;文件搜索路径等的修改就没法下手了,因此必须对我比较关注的地方进行深度学习,知其然还要知其所以然,知道怎么从无到有写出来,而且别人的<em>makefile</em>还要知道怎么根据需求的变化进行修改。...
Makefile 构建工程,如果加载opencv等第三方库
1.在命令行终端输入:$pkg-config opencv --cflags,可以查看本机安装的opencv的include头文件的目录。 2.在命令行终端输入:$pkg-config opencv --libs,可以查看本机安装的opencv的libs库的目录。 3.写测试样例test.cc: #include #include int main(i
Linux下用Makefile制作动态库和静态库并编译生成可执行程序
Makefile 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,<em>makefile</em>定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 <em>makefile</em>就像一个Shell脚本一样,其中也可以执行操作系统的命令。在 Linux(unix )环境下使用GNU 的make工具能够比较容易的构建一个属
编译、链接、Makefile
简单加深对编译和<em>链接</em>的理解: 首先,我想要编译生成一个可执行程序,写成一行挺容易,<em>makefile</em>如下: test:test.cpp cmqtt.cpp cmqtt.h g++ -o test test.cpp cmqtt.cpp -lpaho-mqtt3cs \ -L ../../paho.mqtt.c/build \ -I ../../paho.mqtt.c/src...
再谈makefile指定头文件和库出错的那点破事(折腾了0.5小时)------三个月后发现了真正原因
在文章http://blog.csdn.net/stpeace/article/details/50985578中, 我对<em>makefile</em>指定头文件和库出错的那点破事进行了详细总结, 基本能搞定大部分情况。在本文中, 我来说说自己最近在某新模块中遇到的一个<em>makefile</em>编译错误。        编译好test.so库后, 启动后台服务, 加载test.so库, 发现failed to open
Makefile用法链接
Makefile的编写及四个特殊符号的意义@、$@、$^、$ &amp;lt;font face=&quot;字体&quot; size=&quot;字号&quot; color=&quot;颜色&quot;&amp;gt;这里是需要突出显示的内容&amp;lt;/font&amp;gt; &amp;lt;font color=#0099ff size=12 face=&quot;黑体&quot;&amp;gt;黑体&amp;lt;/font&amp;gt;...
Makefile之关于程序的编译和链接
关于程序的编译和<em>链接</em> —————————— 在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是.obj 文件,UNIX下是.o 文件,即 ObjectFile,这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件,这个动作叫作<em>链接</em>(link)。 编译时,编
Linux学习笔记——例说makefile 增加自定义共享库
0.前言     从学习C语言开始就慢慢开始接触<em>makefile</em>,查阅了很多的<em>makefile</em>的资料但总感觉没有真正掌握<em>makefile</em>,如果自己动手写一个<em>makefile</em>总觉得非常吃力。所以特意借助博客总结<em>makefile</em>的相关知识,通过例子说明<em>makefile</em>的具体用法。     例说<em>makefile</em>大致分为4个部分     1.只有单个C文件     2.含有多个C文件
MKL程序编译与连接:Lapack篇
原帖转自我的空间:http://hi.baidu.com/coolrainbow/blog/index/1 经验表明,第一次做MKL程序编译时,大多数人都会走很多弯路,编译几个小时也不成功。其实这个原因很简单,就是:懒于阅读技术文档!!!!!!事实上,本人当时就是这样,看到3000多页的MKL手册头都大了,于是在编译时就“跟着感觉走”,弄得找不到库或者函数错误。其实,花一个小时读下文档,绝对
makefile编写、GDB调试、so库文件生成
.SUFFIXES:.c .o  //.c和.o建立关联 CC=gcc SRCS=hello.c\         add.c  //同时编译两个.c文件 OBJS=$(SRCS:.c=.o)//ORJS=hello.o add.o EXEC=hello start: $(OBJS)  //依赖hello.o add.o         $(CC) -
AIX环境下,调用动态库以及静态库
前提知识: 动态库后缀.so  静态库后缀.a -c  只编译不<em>链接</em> -o  指定输出名 -L 指定<em>链接</em>库的查找路径 -l 指定<em>链接</em>的库名 -I 文件里面包含了头文件,-I后面跟着查找头文件的路径 上面几项可以满足编译目标 生成.a文件 命令ar  q:快速追加。增加新模块到库的结尾处 t 查看.a文件里面包含的成员 x 提取出.a文件里的成员,如果不指定提取的成员,将
【Linux】【Makefile】开源软件的编译问题
在编译服务器Jenkins上为新平台的MTK方案新建了一个job,但是在编译的时候发现当编译开源软件cloud_client时出现<em>问题</em>,表现的现象是配置脚本configure出现错误,控制台输出的错误信息是:     checking whether C compiler accepts -Wunused-result... no checking whether C compiler acc
简单静态库与动态库的创建以及Makefile基本使用
静态库的创建以及使用: gcc -c log.c |生成 log.o 文件 ar cr libstatic.a log.o |创建静态库libstatic.a 并将 .o 问价<em>链接</em>到 .a 文件中 gcc main.c -L. libstatic.a log.h -o out |-L:<em>链接</em>库 .:表示当前目录 后跟要<em>链接</em>的库和头文件, 生成可执行程序out 动态库的创建以及使用: gcc -c -fPIC log
Makefile嵌套编译多文件项目
在多文件的项目中,一个工程中的源文件比较多,其按类型、功能、模块分别放在若干个目录中,为了项目更加规整,我们常常要将源文件头文件执行文件等分开,所以在编译Makefile时就要做好整个项目的编译准备工作,Makefile定义了一系列的规则来指定,哪些文件需要编译,需要生成什么目标,需要生成库等等。 下面就用实例来列出这些规则,这也是一个基本框架,后边如果需要添加更多的源文件和目录就可以如法炮制,这就可以作为一个较为通
使用多个静态库在连接时出现大量函数未定义
今天编译公司内别人的写的程序,该程序原先是运行在AIX上的,目前没有AIX系统,所以我只好先用linux尝试编译,修改了<em>makefile</em>以后,开始编译。         该程序使用了大量的静态库,这些库就害我寻找并编译了半天,终于到了最后一步连接了,出现了大量函数未定义的错误,我网上查了下是因为静态库的依赖性的<em>问题</em>,于是我调整了顺序,将.o文件放在lib前面,这点似乎无关紧要,我仔细看了错误发现
makefile 中的 指定库和头文件的路径
<em>makefile</em>中的指定头文件,源文件 可以使用VPATH变量也可以使用vpath后者可以分类指定头文件源文件的搜索路径 记住这样指定的路径仅仅是<em>makefile</em>本身查找头文件源文件的路径 在执行<em>makefile</em>时,还要指定gcc/g++搜索头文件库文件的搜索路径 -L //指定库文件搜索路径  -ltest//指定使用的动态库/静态库 -I //指定搜索头文件的路径
C、C++的Makefile的编写以及动、静态库的制作调用(包括MAC地址的获取及MD5加密)
一、C代码 静态库 四个.h.c文件 add.h 1 #ifndef ADD_H 2 #define ADD_H 3 4 int add(int a,int b); 5 6 #endif add.c 1 #include 2 3 int add(int a,int b) 4 { 5 printf("%d %d\n",a,b); 6
gcc中动态库和静态库的链接顺序
so文件:动态库 a文件: 静态库 exe文件:可执行程序(linux下以文件属性来标示是否是可执行文件,与后缀名无关) 经过自己写的一些测试程序,大致了解了下gcc中<em>链接</em>顺序<em>问题</em>,总结出以下几点: 1,动态库中可以包含另一个静态库,通过参数 -lxxx 把静态库libxxx.a加入so文件中,这样so文件中    就包含了libxxx.a的所有实现。当然,如果不包含libxxx.a
【嵌入式Linux+ARM】阶段性总结(Makefile & 链接文件)
阶段性总结: 1.arm-linux-ld arm-linux-ld 的 -T 选项用来指定<em>链接</em>地址;
Makefile 知道这些就够用了
<em>makefile</em>文件的编写规则及实例  (2007-07-18 01:18) 分类: Linux系统及编程   1.一个简单的<em>makefile</em>例子   假设一个程序有两个文件file1.c,file2.c,每个文件都包含head.h,生成file可执行文件   file:file1.o file2.o                  附属行(文件的依存关
makefile 的命令,以及查看函数所在的库
下面我们学习Makefile是如何编写的。 在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖关系的说明。一般的格式是: target:components TAB rule 第一行表示的是依赖关系。第二行是规则。 比如说我们上面的那个Makefile文件的第二行 main:main.o mytool1.o mytool2.o
intel dpdk api 添加自己的库和创建自己的实例程序
声明:此文档只做学习交流使用,请勿用作其他商业用途 author:朝阳_tony E-mail : linzhaolover@gmail.com Create Date: 2013-7-24 16:34:34 Wednesday Last Change: 2013-7-24 16:34:52 Wednesday 转载请注明出处:http://blog.csdn.net/linzhao
mysql与其他文件编译 Makefile总结
现在有两个文件test.c mmysql.c mmysql.h 他们相互关联,每次编译都要加上gcc -o test $(mysql_config --cflags) mmysql.c test.c $(mysql_config --libs) 每次编译都得加这个,所以写个Makefile CC = gcc LIBS = $(shell mysql_config --libs) CFLAG
Acronis Disk Director Suite v10.0.2160 英文版 注册机下载
Acronis Disk Director Suite v10.0.2160 英文版 注册机 相关下载链接:[url=//download.csdn.net/download/stormhgl/2529435?utm_source=bbsseo]//download.csdn.net/download/stormhgl/2529435?utm_source=bbsseo[/url]
android TabHost底部菜单(类似iphone)下载
看到很多童鞋都在找关于android TabHost的菜单ui 自己在练习的时候写了一个,希望可以帮助你更喜爱android 相关下载链接:[url=//download.csdn.net/download/l16426434/3367476?utm_source=bbsseo]//download.csdn.net/download/l16426434/3367476?utm_source=bbsseo[/url]
asp.net图片上传加水印下载
学习asp.net时候写的图片上传并且可以加文件水印的小代码,可以支持文件上传,图片上传并可加水印!代码修改下就可以用在很多方面! 相关下载链接:[url=//download.csdn.net/download/u010551717/5335238?utm_source=bbsseo]//download.csdn.net/download/u010551717/5335238?utm_source=bbsseo[/url]
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 大数据的原始库和基础库
我们是很有底线的