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

Bbs1
本版专家分:0
结帖率 45.45%
Bbs5
本版专家分:3199
Blank
红花 2018年4月 硬件/嵌入开发大版内专家分月排行榜第一
Bbs1
本版专家分:0
Bbs1
本版专家分:70
makefile.am中生成.a静态库的同时,链接其他.a静态库或.la动态库的问题
我想在<em>makefile</em>.am中生成一个.a静态库,同时需要<em>链接</em>其他程序的.a静态库。<em>makefile</em>.am如下: lib_LIBRARIES=libmycharon.a libmycharon_a_S
Makefile 连接静态库注意事项
CC = gcc #CFLAGS =  -I. -I/sbilling/charging/src/lib/ -D_REENTRANT -g -I/usr/include/mysql/ #LZIBS = -L. -lm -L/usr/lib64/mysql/ -lmysqlclient -L/sbilling/charging/src/lib/ -ldci CFLAGS =  -I. -I
用实例程序再聊makefile指定头文件和库出错的那点破事
在文章http://blog.csdn.net/stpeace/article/details/50985578中, 我说过<em>makefile</em>指定头文件和库文件出错的那点破事, 今天破事重提, 用实际例子来聊一下. taoge@localhost Desktop> cat basic_add.c int basic_add(int x, int y) { return x + y; }ta
makefile链接顺序
1. 你有一个library或者是可执行文件,你可以这样查看他的依赖关系: readelf -dldd工具 2.查看某个. c文件引用了那些头文件   gcc -M    :查看引用的全部头文件(包括系统头文件)  gcc -MM :忽略系统头文件 3.对于library的查找 查找需要连接的符号名是从前向后找---即最后一个-l库文件最先调用;根据-L指
linux 库的依赖和链接的顺序
linux库的依赖和<em>链接</em>先后顺序
Makefile中库链接问题
这个很短 LIBS = -L dir -llibname1 -llibname2  -llibname3 dir 是库所在的路径 libname 是库的名字 注意: 库的顺序,<em>makefile</em>先识别后面的库,是堆栈的思想
Makefile 连接库文件的方法
Linux的静态库是以.a结尾的,要连接静态库有两种方法,一种是在编译命令最后直接加上库路径/库名称。例如你的库在绝对目录/lib/libtest.a下面 你就可以这样来编译 $(CC) $(CFLAGS) $^  -o $@  /lib/libtest.a 另外一种方法是,你可以用-L制定库德路径,用-l指定库的名称 例如库的名称为libtest.a 那么就用-ltest CROS
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
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
《调用opencv库的简单makefile示例》
SRCS = $(wildcard *.cpp) # wildcard把 指定目录 ./ 下的所有后缀是cpp的文件全部展开。 OBJS = $(SRCS:.cpp = .o) # OBJS将$(SRCS)下的.cpp文件转化为.o文件 CXX = g++ # 代表所使用的编译器 INCLUDES = -I/usr/local/include/ope
Linux下Makefile中动态链接库和静态链接库的生成与调用
背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译、<em>链接</em>、生成可执行文件,从而实现了移植的过程。平台是Toradex的Apalis TK1,三千多元,买回来我就后悔了,全是英文资料,还各种Bug,迟迟无法上手。早知如此,还不如直接买Nvidia的Jetson TK1呢。书归正传,今天写一下Makefile文件中,动态链
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应用之静态链接
http://www.cnblogs.com/huochangjun/archive/2012/09/04/2670150.html Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件; .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大; .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
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
ANDROID NDK makefile 链接静态库的方法
[NDK] Android.mk Android NDK的 <em>makefile</em>在r4及r5b的寫法有點不一樣 --------------------------For r4 ------------------------ LOCAL_PATH:= $(ca
makefile 强制使用静态链接
方法1-static : 所有的库文件使用静态库<em>链接</em>g++ -static -ltest -lfoo 方法 2:这里有2个命令介绍一下:–Bdynamic : 用于在各种可能的情况下为共享动态绑定设置首选项。-Bstatic : 将绑定只限制于静态库。当库的静态和动态版本都可用时,使用这2个选项在命令行首选项间进行切换。 注意使用这2个命令需要配合 -Wl 选项一个例子g++ -Wl,-Bsta
makefile与动态链接库案例分析——动态库链接动态库
背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主工程dds(调度数据服务器)。 有源代码,打算直接编译Libmdpha.so.xxx,加入主工程dds。复制动态库到主工程相关路径,并改<em>makefile</em>,主要加复制命令和建立软连接的命令,库名注意统一: 引用库中加入Libmdpha 同时加         cp -f $(INTERFACES_
makefile中编译静态链接
目录结构是, 上面的<em>makefile</em>是子文件夹中的<em>makefile</em>,下面的是外层<em>makefile</em>,编译的话外层的目标依赖内层文件夹的静态<em>链接</em>库。 上层文件夹中的<em>makefile</em>内容如下: O_FILES = MQTTConnectClient.o \  MQTTConnectServer.o \  MQTTDeserializePublish.o \  MQTTFo
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
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 静态库动态库应用实例
在Linux系统中: 静态库的创建 gcc -c filen.c ar -cr libname.a file1.o file2.o ... ar:静态函数库创建的命令 -c :create的意思 -r :replace的意思,表示当前插入的模块名已经在库中存在,则替换同名的模块。如果若干模块中有一个模块在库中不存在,ar显示一个错误信息,并不替换其他同名的模块。默认的情况下,新的成员增加在库德...
Openssl 库的静态链接
<em>链接</em>Openssl库的时候,遇到一个<em>问题</em>:明明在Makefile里指明了link指定的.a文件(openssl-1.0.1c/lib/libssl.a 和 openssl-1.0.1c/lib/libcrypto.a),但build完成后的可执行程序在运行时还是会去link操作系统下的Openssl动态库 /lib64/libssl.so.10,难道不是静态<em>链接</em>的? (假设可执行文件是 /hom
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文件
编译基础——如何用g++编译自己的库,以及一个简单的makefile文件
本文介绍如何用g++编译自己的库,以及一个简单的<em>makefile</em>文件。
Ubuntu下程序的编译和链接过程和openCV的makefile文件
简述 在windows下编程,可能一个F5就能让代码跑起来,那是因为IDE(比如VS2103等)已经帮你做好了后台的编译和<em>链接</em>过程。当在Ubuntu下让代码跑起来,就要自己去理解代码的编译和<em>链接</em>过程。 下面说说什么是编译,什么是<em>链接</em>: 编译就是将源文件通过Complier,生成中间文件,在windows下,中间文件就是.obj 文件,在Ubuntu下,就是.o文件,即 Object...
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生成器,使用C++和Boost实现
今天学习了一下Boost的文件遍历功能,同时发现GNU编译器有-MM选项,可以自动生成依赖关系,于是利用以上两点写了一个Makefile生成器。可以生成一般的单个可执行文件的Makefile,使用的是Windows+Mingw+boost环境。如果使用Linux,只需在程序中的两个System系统调用处和clean标签生成处将del 改成rm相关操作就好了。 下面是源代码: makemake.
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的编写和在项目工程中使用Makefile(包括动态库、静态库的链接、整个工程联合编译)
一、通用Makefile文件的编写        (1)、什么是通用Makefile?                     这里的通用Makefile指的是它既能编译可执行文件、也能编译动态<em>链接</em>库、又能编译静态库,只需要更改很少的内容即可。        (2)、写一个通用Makefile #-------------------------配置区域------
如何自己写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 ...
GCC 编译动态链接库和静态链接库 + 大型工程Makefile编写 + Linux环境变量的设置和查看方法
GCC 编译使用动态<em>链接</em>库和静态<em>链接</em>库  1 库的分类 根据<em>链接</em>时期的不同,库又有静态库和动态库之分。 静态库是在<em>链接</em>阶段被<em>链接</em>的,所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行。 有别于静态库,动态库的<em>链接</em>是在程序执行的时候被<em>链接</em>的。所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用。 2 静态库和动态库的比较 <em>链接</em>静态库其实从某种意义上来说也是
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
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
linux 动态库的编译、调用,(用Makefile编译)
我们在做一个C/C++项目的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。 这就是动态库,当然也包括静态库。今天聊聊动态库的生成和调用方法。 动态库的生成 首先,创建 动态库 源文件 test_1.h ...
一点一点学写Makefile(3)-增加第三方库和头文件
我们在写代码的时候不一定都是有自己来完成,一个工程中会大量使用一些比较优秀的动态库、静态库等,我们在使用这些库完成所有的代码后,需要在编译的时候将这些库使用的头文件添加到我们的工程上,将他的库文件也添加到我们的工程中,接下来我们就来看一下怎么来添加。 我们在项目中很少将第三方库与我们自己的代码放到同一个目录中,而是有一些约定俗成的存放方法: 如上图,我们会将第三方库的头文件放到includ
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. 静态连
几个常用makefile模板(动态库、静态库、可执行程序)
1、编译动态库 ############################################################# # Makefile for shared library. # 编译动态<em>链接</em>库 ############################################################# ...
编译mysql数据库文件的Makefile
在编译的时候,有的文件<em>链接</em>了数据库,这个时候Makefile的编辑与普通的有所区别。 记录在此,以备后用 obj=main.o myServer.o Mysql.o pub.o src = $(wildcard *.cc) obj = $(patsubst %.cc,%.o,$(src)) target = app $(target):$(obj) g++ $^ -o $@ -L
makefile中指定动态库路径
我们把一个项目做到一个文件夹下面,以后要用的就拷贝整个文件夹到服务器上就好了,现在涉及到了动态库的<em>问题</em>,会在服务器上编辑,但不在每台服务器上都加上新增的动态库路径。所以想在<em>makefile</em>中修改使其更傻瓜。   gcc中的rpath用法: -Wl,-rpath,dir 多个dir之间用冒号分隔: -Wl,-rpath,dir1:dir2:...:dirN     对于我们的项目: L
Windows makefile 多个引用库文件路径配置
Windows <em>makefile</em> 多路径配置 由LIB参数控制。 用分号";"分割多个路径,如: TOOL32 = D:\Program Files\VS2003 LIB= $(TOOL32)\lib;$(TOOL32)\PlatformSDK\Lib 路径中如果有空格导致无法找到文件,则试试加上双引号"",如: LIB= "$(TOOL32)\lib";"$(TOOL
静态库的链接顺序
今天工作中遇到了一个很诡异的<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中
make,makefile和程序的编译链接过程
一,Linux下程序运行过程 1,在一个目录下新建三个文件:main.c hello.c hello.h分别编写他们如下图: 2,想要让这个程序执行起来,就必须对上面的三个文件分别进行编译<em>链接</em>执行,如下图: 通过上面这个过程。我们可以大致总结一下gcc编译器把目标文件经过预处理,编译,汇编,<em>链接</em>生成可执行文件的过程和命令: (1)预处理(宏替换,删除注释和多余的空白字
makefile 中的 指定库和头文件的路径
<em>makefile</em>中的指定头文件,源文件 可以使用VPATH变量也可以使用vpath后者可以分类指定头文件源文件的搜索路径 记住这样指定的路径仅仅是<em>makefile</em>本身查找头文件源文件的路径 在执行<em>makefile</em>时,还要指定gcc/g++搜索头文件库文件的搜索路径 -L //指定库文件搜索路径  -ltest//指定使用的动态库/静态库 -I //指定搜索头文件的路径
makefile 编译第三方库
语音增强和识别网页书 以前在编写跨平台编译框架时,要引用第三方库,这里的例子实现了下载和编译第三方库,正适合用~! ``` FFTW = fftw-3.3.4 all: .deps fftw decode ops utils .deps:     sudo apt-get install libsamplerate-dev -y     pip install -r requiremen...
最简单 的入门且最直观的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
关于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
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
[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
实战总结----用Makefile编译生成动态链接库.so
写在前面: 1、在实际项目开发当中,库文件用的很多,尤其是在不同的 企业之间为了防止源码公开,都是以库的形式提供给对方,然后提供必要的头文件就可以了。本文主要介绍Linux下和Windows下的库的格式,以及动态<em>链接</em>库和静态<em>链接</em>库的作用,Linux下如何用Makefile编译制作动态<em>链接</em>库的方法。 2、Makefile博大精深,在平时用的不多,所以本文也是对刚刚用过的Makefile简单使用的...
使用Automake生成Makefile及动态库和静态库的创建
使用Automake创建和使用静态库1. 目录结构如下:example|——src 目录(存放源代码文件) |——hello.c|——lib 目录(存放用来生成库的文件) |——test.c 用来生成静态库libhello.a|——include 目录(存放程序中使用的头文件) |——
Ubuntu下makefile及gcc生成静态库动态库的简单使用举例
Ubuntu下<em>makefile</em>及gcc生成静态库动态库的简单使用举例
linux动态库及静态库的制作 和makefile 的简单编写
一.库 什么是库,简单的可以说是可执行代码的二进制形式,能够被操作系统载入内存执行。操作系统的不同,二者的库也是不兼容的,如windows与linux. 库又分为静态库和动态库,动态库又称为共享库。linux下静态库(.a)文件,动态库(.so)文件。主要存放函数库的路径有:/lib , /usr/lib. 二.静态库与动态库 1.静态库 这类库的名字一般是libname.a.利用静态库
一个STM32项目的makefile模版详解
啥都不说了,直接上代码,注释相当详细了。 #STM32 <em>makefile</em> template # 生成的文件名 PROJECT = stm32_Mini_Led # 定义文件格式和文件名 TARGET := $(PROJECT) TARGET_ELF := $(TARGET).elf TARGET_B
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
在查看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
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中指定链接地址的方式
两种: 第一种是指定连接器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 $^,这句功能同上...
链接为可执行文件时‘未定义的引用’问题
很奇怪我在creatdir.c中引用c_zhtclent.h头文件,c_zht_insert2为c_zhtclent.h中的函数 为什么在编译为.o文件的时候没有错误,在连接为可执行文件的时候就会出现未定义的引用? 原因:缺失了库zht  解决: 在<em>makefile</em>中的LDFLAGS中加人-Lzht/lib -lzht -lstdc++ -lprotobuf -lpthread用于加载这些
linux下静动态库Makefile的编写和应用
前言 在linux下做项目,难免会有对库的封装,需要把自己编写的程序编译成静动态库给其他人提供接口,这时候最重要的就是Makefile的编写。 一、动态库Makefile的编写和使用 1、动态<em>链接</em> 连接器在<em>链接</em>时仅仅建立与所需库函数的之间的<em>链接</em>关系,在程序运行时才将所需资源调入可执行程序,也就是你在执行应用程序的时候一定要把你编译后的.so配置到你执行程序环境下,直接拷贝到/lib
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自动生成依赖文件,并自动编译
因为经常要用到<em>makefile</em>编译,每次都为头文件的依赖关系头痛,所以这次费了两天时间开发了一个通用的<em>makefile</em>,它可以自动生成依赖文件,并编译,当然你要按文件里面的说明来填充一些中间文件名. 代码如下: #自动依赖项(*.d),并编译生成文件 #编译选项 LDFLAGS = -Wall #-ggdb #库目录 DIR = /usr/local/arm/3.3/lib
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基本使用
静态库的创建以及使用: 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模板,只用来生成静态库文件,后面再继续添加内容吧先来看下目录结构[zhang@zwfedora23 libs]$ tree . ├── Makefile ├── src │ ├── libs1.c │ ├── libs1.h │ ├── libs2.c │ ├── libs2.h │ └── main.
MakeFile库路径搜索
交叉编译的时候不能使用本地(i686机器,即PC机器,研发机器)机器上的库,但是在做编译<em>链接</em>的时候默认的是使用本地库,即/usr/lib,/lib两个目录。因此,在交叉编译的时候,要采取一些方法使得在编译<em>链接</em>的时候找到需要的库。  首先,要知道:编译的时候只需要头文档,真正实际的库文档在<em>链接</em>的时候用到。 (这是我的理解,假如有不对的地方,敬请网上各位大侠指教) 然后,讲讲如何在交叉编译<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内容了, AR=ar LD=ld CC=gcc CFLAGS = -O2 -Wall  -I./Test \                 -I./Test/Test1 \ #注:"\"后面不能有空格,并且该句写完后最好有个换行 #注释部分推荐在单独的一行编写  
linux下程序链接多个静态库,提示找不到函数链接问题
有时候你会发现函数所在的静态库,明明在Makefile里指定了,但是还是会报错,提示找不到。 原因就在于静态库之间有依赖关系以及<em>链接</em>顺序<em>问题</em>。书写在右边的库最先被<em>链接</em>。 解决办法: 一般来说有两种办法,一种是仔细分析依赖关系,并按照正确的顺序书写库文件的引用。原则是被依赖的尽量写在右边。但是在有些大型项目中,依赖关系可能并不容易梳理清楚。此时可以在命令行参数中重复对库文件的引用。...
学习在linux和windows安装GSL和使用,编译 链接makefile的撰写和实现
一, 先来一个大家常常遇到的<em>问题</em>解答:Visual studio 2012 Debug版本转化到Release版本,编译不成功是因为Release中的设置,<em>链接</em>库和Debug不相同。需要手动修改成为一样的才可以。系统并不会直接给你转换成为相同配置。 二,安装gsl 库连接和<em>makefile</em> 的撰写,自己成功在linux下面成功编译通过 /*感谢来自清华大学的陈俊杰同学的修改贡献*/  new
visual studio 2013上搭建arm交叉编译环境(四)makefile配置及编译过程
交叉编译<em>makefile</em>配置及编译过程 上篇文章已经介绍了cygwin测试工程建立和生成的方法,本文在此工程的基础上,介绍<em>makefile</em>修改及编译过程。  debug.mak是<em>makefile</em>的配置文件,此文件通过<em>makefile</em>中如下语句导入到<em>makefile</em>中,作为<em>makefile</em>特定变量的定义文件。 下面是debug.mak文件,应该很容易理解。 #DO NOT EDI
linux环境下同时使用静态库、动态库编译程序
1. 应用场景因某些原因,需要同时使用静态库及动态库编译代码。 在这里我需要静态<em>链接</em>的是zbarlib,动态<em>链接</em>的是opencv库。 经过一个下午的艰苦奋斗,分享一下网上的解决方法以及最终导致不成功的原因所在。2.Makfile实例CXX=g++CFLAGS += -I${PWD}/../zbar/include CFLAGS += -I${PWD}/../opencv/includeLDFLA
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 +=
makefile常用写法和简易写法
先说长用到的-l: 小写的l就是依赖的lib库,lib首字母,很好记。 -L: 引用的三方lib库所在目录,lib首字母大写就是目录,也好记。 -I: 少不了头文件目录,还是老路子,include首字母,大写代表目录下面这些是编译选项: -Wall:提示所有警告 -g: 产生调试信息,应该是gdb的首字母 -c: 就是编译咯,compile首字母 -o: 这个必须有的,就是编译链的输出,
makefile指定头文件和库出错的那点破事
某模块提供了test.h头文件和libtest.a库, 供外部代码调用: 1. 如果在代码中包含了某头文件test.h, 但在makefle中没有指定头文件路径/或者头文件根本不存在, 会出现编译错误, 会提示缺少test.h. 2. 如果包含了test.h头文件,且指定了头文件路径, 且指定libtest.a库, 但实际此库并不存在(比如没有提前编译出来), 会出现编译错误, 提示缺少 cannot find -ltest 3.如果包含了头文件,且指定了头文件路径,
Makefile之关于程序的编译和链接
关于程序的编译和<em>链接</em> —————————— 在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是.obj 文件,UNIX下是.o 文件,即 ObjectFile,这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件,这个动作叫作<em>链接</em>(link)。 编译时,编
发展周期(五):使用glibc动态链接和加载
原文<em>链接</em>:https://developer.chrome.com/native-client/devguide/devcycle/dynamic-loading 注意:已针对ChromeOS以外的平台公布了此处所述技术的弃用。 请访问我们的 迁移指南 了解详情。 使用glibc动态<em>链接</em>和加载 Portable Native Client目前仅支持静态<em>链接</em>,唯一可用的C库是newlib。此页...
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
g++编译链接c语言文件报错“undefined reference ” 的处理
用QT写一界面程序,其中用到另一同事写的一个小功能,他是用c语言写的,于是把他的代码头文件和源文件都copy过来了,加入工程中,结果<em>链接</em>的时候就总报错 undefined reference 某个函数。再三确认了<em>makefile</em>文件和源码,表示没<em>问题</em>,后来想到或许是g++和gcc是不是编译后不一样啊,再上网一查,果然,g++编译的.o文件C语言好像无法识别(大概是这个意思,具体是怎样的也没细研究)...
Linux下的C/C++开发基础(编写makefile、编译C/C++、链接、可执行程序)
本文重点介绍C/C++源码工程的编译<em>链接</em>,编译器gcc/g++的安装配置略过... 1. 安装配置gcc g++ 2. 创建文件 test.h /test.c / file.h  / file.cpp  3. 编译.o库: gcc -c / g++ -c     <em>链接</em>生成静态库.a库: ar -r    <em>链接</em>生成动态库.soK库:gcc -shared -o/ g++ -shared -o    ...
如何在交叉编译链中链接json库
下载源码 wget http://oss.metaparadigm.com/json-c/json-c-0.9.tar.gz   tar xvf json-c-0.9.tar.gz    cd json-c-0.9/ ./configure --prefix=$PWD/tmp CC=/opt/toolchain/toolchain-4.5.1-farsight/bin/arm-non...
基于STM32 HAL库在Makefile+GCC-ARM上面的工程编译
之所以用这种方式开发,是因为当下MDK编译的速度实在是太慢了,可能是因为PC是祖传的<em>问题</em>吧。而且个人认为这样可以多了解GCC-ARM的工具以及Makefile,为后续学习u-boot打基础。这种方式适合喜欢旁门左道的道友去学习,而且网上基本找不到关于这种开发模式的文章,写下这个也是为了以后万一以后记不住可以翻出来看看。同时很感谢一些大佬的耐心指导。回归正题。 一、首先是工具及材料的准备 1、一
多个静态库合并
这个方法适合下面的<em>问题</em> 合并多个静态库。静态库的多级依赖。静态库级联调用,导致<em>链接</em>错误。。。。。。。 第一步:生成静态库文件 echo CREATE lib-static.a > ar.mac 回车 echo SAVE >> ar.mac 回车 echo END >> ar.mac 回车 ar -M   第二步:加入.o文件至静态库 ar -q lib-static
编译时动态库名与运行时查找的不一样
需求:    编译第三方库mad,且让库跟随项目环境,不依赖于系统环境。 <em>问题</em>描述:     第三方库mad,在Linux上编译后,生成文件libmad.so,重命名为libmadlinux.so,<em>链接</em>入可执行文件。        g++ ./test.cpp -L. -lmadlinux -lsoDemo2 -Wl,-rpath . -o test         运行过程中一直...
如何让 libtool 自动链接静态库,生成静态可以执行程序
1. 最近在交叉编译parted,可是发现,无论我如何弄,生成的parted 都是动态<em>链接</em>的可执行文件 我需要一个静态<em>链接</em>的parted,但是无论我如何配置,生成的都是动态的最后修改了: parted-3.2/parted/<em>makefile</em> parted_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \     $(L...
gcc做一个静态库文件 .a .so makefile
静态库文件一般是a为后缀,如libxxx.a。实际上是把全部o文件打包。其实只用到了2句话:gcc -c src.car r libxxx.a src.o 提供下<em>makefile</em>参考:CFLAGS := -g -Wall  CC := arm-linux-gcc  CSRCS := bbb.c  COBJS := bbb.o  INC
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
makefile规则语法-依赖和搜索
一、规则语法: 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ... 规则中“TARGETS”可以是空格分开的多个文件名,也可以是一个标签(例如:执行清空的“clean”)。 通常规则只有一个目标文件(建议这么做),偶尔会在一个
Theos--定制工程文件(MakeFile篇)
介绍 MakeFile文件指定工程用到的文件、框架、库等信息,将整个过程进行自动化。 theos中.mk的说明这里我就拿theos生成的模板中的 MakeFile文件进行对应的介绍、include theos/<em>makefile</em>s/common.mk #固定写法TWEAK_NAME = iOSREProject #项目创建时候的项目名称 iOSREProject_FILES = Tweak.
从github安装C++库,makefile
从github上下载了源代码来编译。却到处踩坑。 首先是<em>makefile</em>,mMakefile里面记录的是 你的工程(也就是一堆程序的有序集合)的编译规则。 一般编译脚本都写在autogen.sh这个文件中  我安装的库的autogen.sh的内容如下: mkdir -p m4 autoreconf --install --verbose ./configure make
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
文章热词 双目视觉问题 特征点问题 相机标定问题 最优化问题 统计学稳健估计问题
相关热词 c++ ios 库 链接 c链接c++库 c++库的链接 c++库怎么链接c库 区块链问题 python教程百度云链接
我们是很有底线的