-
2021-10-25 19:28:20
在 CMakeLists.txt 末尾添加
set(libalgo ${PROJECT_SOURCE_DIR}/libs/armv8-64/libalgo.a) set(libftkmath ${PROJECT_SOURCE_DIR}/libs/armv8-64/libftkmath.a) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_AR} x ${libalgo} COMMAND ${CMAKE_AR} x ${libftkmath} COMMAND ${CMAKE_AR} x $<TARGET_FILE:${PROJECT_NAME}> COMMAND ${CMAKE_AR} rcs libftkalgo.a *.o COMMAND pwd COMMAND rm *.o COMMAND mv libftkalgo.a ${LIBRARY_OUTPUT_PATH_ROOT} )
更多相关内容 -
将代码及依赖的静态库编译为新静态库
2017-10-11 19:21:14将代码及依赖的静态库编译为新静态库最近需要在一个开源库上实现一个新功能并封成新的lib。方法: 将代码编译为.o 使用ar -x 将依赖的静态库拆成.o 使用ar -rcs 将.o编译生成新的.a 一些参数设置AR:=...将代码及依赖的静态库编译为新静态库
最近需要在一个开源库上实现一个新功能并封成新的lib。
方法:
- 将代码编译为.o
- 使用ar -x 将依赖的静态库拆成.o
- 使用ar -rcs 将.o编译生成新的.a
一些参数设置
AR:=$(ICAT_CROSS_COMPILE)ar CPP:=$(ICAT_CROSS_COMPILE)g++ CFLAGS+=-O2 -Wall -Wno-write-strings -D_LINUX CPPFLAGS+=-std=c++11
1 将.cpp生成 .o
$(CPP) $(CFLAGS) $(CPPFLAGS) -c $(APP_SRC)
2 将cpp 依赖的.a 解为 .o
$(AR) -x ../libboost_random.a $(AR) -x ../libsioclient.a
3 将.a解析的.o 及 cpp 编译生成的.o 编译为.a
$(AR) -rcs libiisc.a $(LIB_DIR)/libsioclient/*.o $(LIB_DIR)/libsioclient_tls/*.o socketio.o json_reader.o json_value.o json_writer.o iisc.o
注意:
1 调用静态库,一直提示undefined reference to 问题解决。
采用直接将 ar -rcs target.a xx1.a xx2.a xxx.o 方式生成静态库。
结果是: cpp 找不到依赖的静态库。 直接报undefined reference to。可以把xx1.a xx2.a去掉直接ar -rcs target.a xxx.o 。 也会提示undefined reference to。
结论:
ar -rcs target.a xx1.a xx2.a xxx.o = ar -rcs target.a xxx.o
通过直接添加依赖的静态库xx1.a 是没有效果。
2 注意依赖静态库拆分来的 .o 编译顺序十分重要。
拆分前.a编译顺序是怎么样的,拆分后的.o顺序就要排成怎么样,否则会出现非常奇怪的错误。
参考文献:
解决undefined reference to 问题比较好的文章:
http://blog.csdn.net/aiwoziji13/article/details/7330333/静态库链接动态库:
http://blog.csdn.net/newchenxf/article/details/51735600 -
window Qt5.6静态库编译版本,以及使用教程
2019-01-16 18:07:51文档中包含Qt5.6静态版本链接,本人编译了一下午才完成的。 以及使用教程。该文档用于帮助新手快速入门。 -
linux 编译 依赖静态库的静态库问题
2017-09-29 11:45:11最近工作中遇到一个linux编译问题,其实是小问题,但经验不足,弄了2天,特做记录。 背景--------------------------------- 这次是做一个新的项目,项目软件编译架构如下图: |-----libm1.a |----...前言----------------------------------
最近工作中遇到一个linux编译问题,其实是小问题,但经验不足,弄了2天,特做记录。
背景---------------------------------
这次是做一个新的项目,项目软件编译架构如下图:
|-----libm1.a |-----libn1.a
main-----|-----libm2.a -------|
|-----libm3.a |------libn2.a
说明:主程序下有三个模块m1、m2、m3,其中模块m2依赖开源模块n1和n2,模块n1依赖n2.
编译时是在主makefile里包含所有的子makefile,包括m1、m2、m3、n1和n2的makefile,链接时把所有的静态库链接成一个可执行程序。
问题--------------------------------------
编译到最后所有的静态库都生产了,但是在链接时,报错链接libm2.a的时候报错,类似“func_xxx() 未定义的引用”。
这些func_xxx()都是定义在libn1.a和libn2.a里的函数,并且在libm2.a里面被调用了。
原因应该是链接libm2时找不到这些函数的实现。
解决方法---------------------------------
调整链接的顺序即可,之前的链接顺序是:
LIBS += $(REL_LIB_DIR)/libn1.a
LIBS += $(REL_LIB_DIR)/libn2.a
LIBS += $(REL_LIB_DIR)/libm2.a
调整后为:
LIBS += $(REL_LIB_DIR)/libm2.a
LIBS += $(REL_LIB_DIR)/libn1.a
LIBS += $(REL_LIB_DIR)/libn2.a
总结----------------------------------------------
这个问题是链接时找不到依赖函数的实现,原因是链接时依赖顺序不对。
之前做的比较多的是android的makefile,android里面的链接顺序写法是把被依赖的库写在前面,而linux里面刚刚相反了。
-
go语言静态库的编译和使用方法
2021-01-19 23:56:41本文主要介绍go语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下: >echo %GOPATH% E:\share\git\go_practice\ >echo %GOROOT% C:\Go\ >tree /F %GOPATH%\src 卷 work 的文件夹 ... -
使用openCV的静态库编译
2021-05-13 03:47:52转载请注明出处:By 少侠阿朱摘要:本文主要讲述如何使用opencv静态库进行编译,生成脱离opencv环境可执行.exe文件。实现的效果:此方法生成的exe文件在其他没有配置openCV环境的电脑上可直接执行。使用到的工具:...转载请注明出处:
By 少侠阿朱
摘要:
本文主要讲述如何使用opencv静态库进行编译,生成脱离opencv环境可执行.exe文件。
实现的效果:
此方法生成的exe文件在其他没有配置openCV环境的电脑上可直接执行。
使用到的工具:
openCV2.411
VS2013
debug模式下编译流程如下:
首先:项目的debug属性表
修改框中项目“$(OPENCV)\x86\vc12\lib;$(LibraryPath)”为静态库位置“$(OPENCV)\x86\vc12\staticlib;$(LibraryPath)”
其次:“C/C++”-“代码生成”-“运行库”改为“多线程调试 (/MTd)”,这个'd'表示debug模式。
然后:“连接器”-“输入”-“附加依赖项”中,在最开头加入:
IlmImfd.lib
libjasperd.lib
libjpegd.lib
libpngd.lib
libtiffd.lib
zlibd.lib
最后:
重新生成解决方案。记得选择debug模式。
则编译成功。
release模式下编译流程如下:
修改release的属性表
大家发现这一项是和debug属性表共享的,已经是“staticlib”:
然后大家会发现运行库这一项也是共享的,之前设置为“MTd”,现在我们需要改为“MT”。切记这里改了,则编译的时候一定要release模式,不然出错
然后是:
“连接器”-“输入”-“附加依赖项”中,在最开头加入:
IlmImf.lib
libjasper.lib
libjpeg.lib
libpng.lib
libtiff.lib
zlib.lib
注意这里和debug模式的不同,所有库都是没有'd'结尾的。
最后:编译选择release模式。
编译通过。成功生成release版本的exe
C++静态库编译
MFC 选项选择: 静态库编译 增加头文件:( opencv相关的) #pragma once #ifdef WIN32 #include
iOS之 PJSIP静态库编译(三)
dada哪个所有静态库编译完成后还是不能运行那个demo,提示你找不到arm**.a 你lipo后要记得吧合并成.a 名字更改成你最后编译版本生成的.a名字....... 或者吧所有库add到你的工 ...
iOS之 PJSIP静态库编译(一)
首先放上pjsip官方网站http://www.pjsip.org/download.htm 下载的时候注意while the .bz2 has LF line-ends and is for Uni ...
SQLite3动态库、静态库编译
资源准备 1.下载SQLite3源码,下载地址为https://www.sqlite.org/download.html.下载sqlite-amalgamation-3200000.zip和sqlit ...
QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...
[转]QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...
libcurl 静态库编译
转载:http://www.cnblogs.com/jkcx/p/6406706.html 1.下载最新版的libcurl(官网:http://curl.haxx.se/download.html), ...
Qt5.9静态库编译VS2015-x64
不多说. 编译配置参数如下 configure.bat -static -no-openssl -release 不支持OpenSSL,也没有安装各个数据库的Driver,所以数据库方面也只支持了SQ ...
随机推荐
JSON.stringify的使用方法
语法: JSON.stringify(value [, replacer] [, space]) value:是必须要的字段.就是你输入的对象,比如数组啊,类啊等等. replacer:这个是可选的. ...
C#——Dictionary<;TKey, TValue>; 计算向量的余弦值
说明:三角函数的余弦值Cos我想,每个学计算机的理工人都知道,但是真的明白它的用途,我也是刚明白.每个人在初中或者高中的时候,都有这么个疑惑,学三角函数干什么用的?很直白的答案就是考试用的.而且当时的 ...
mysql 的设置
网上的一些文章都已经比较老了,现在版本高了之后,其实配置是很省力的(不考虑什么负载的话) 分享全过程,出了文中提到的安装epel rpmfushion 源指令不同外,其他的过程也适用与Centos 5 ...
Cortana 在安装语言包后失灵 | 解决
http://windows.microsoft.com/zh-cn/windows-10/cortanas-regions-and-languages 适用于 Windows 10 Currentl ...
Visual Studio个人常用快捷键
Ctrl+F5:运行程序 F9:设置/取消断点 F5:启动调试 F10:逐过程单步调试 F11:逐语句单步调试 按住Ctrl先按K再按D:格式化全部代码 按住Ctrl先按K再按F:将选中代码块格式化 ...
WPF多窗口传参解决方案
在WPF中,我们的常常涉及到多个窗口之间传递参数的问题,那么该怎么传呢? 答:在窗口的构造函数中添加想要传递的参数.(我表达不好,请看下面代码.) 在主窗口中单机button打开一个新的子窗口. // ...
dotnetbar 的BalloonTip的用法
‘设置提示标题 tip.SetBalloonCaption(txt_ID, "提示") ’设置显示的控件 和显示内容文本 tip.SetBalloonText(txt_ID, &q ...
Swift2.2 看完这篇博客 你不想懂也会懂得----二叉树
一:初衷 我自己也好奇,为什么莫名其妙的想起写这个,其实数据里面包含的结构和逻辑我自己觉得才是最原始经典的,最近也在学swift,就向着利用swift整理一些二叉树.自己刚开始的时候也是用OC看着别的 ...
ubuntu fiddler firefox http网页不能访问 Secure Connection Failed
1. 给firefox导入fiddler的证书 1) fiddler:tools --> fiddler opthins --> https --> 勾选Capture HTTPS ...
nginx+apache动静分离/负载均衡
[主从] [Mysql-Master] log-bin=mysql-bin server-id = MariaDB [(none)]> grant replication slave on *. ...
-
cmake编译静态库/动态库/可执行文件demo
2018-01-24 17:11:50最近用到OpenCV,发现OpenCV里到处都在用cmake,特写了cmake编译规则的demo,生成静态库/动态库/可执行文件及测试demo,欢迎下载! -
VS编译静态库以及对静态库的引用
2018-12-11 17:07:46vs编译静态库: 1:项目属性--》常规 --》设置输出目录 && 配置类型 2:在库管理器--》常规--》输出文件 确认路径以及库名 引用静态库: 1.vc++ 目录 --》选择库目录--》选择相应的库所在... -
动态库、静态库编译测试:含静态库链接动态库、静态库,动态库链接静态库、动态库
2018-09-07 15:18:06本文的目的是测试各种类型库...①静态库libbb.a依赖静态库libaa.a的测试; ②静态库libbb.a依赖动态库libaa.so的测试; ③动态库libbb.so依赖静态库libaa.a的测试; ④动态库libbb.so依赖动态库libaa.so的测试; ... -
linux下编译 静态库、动态库,动态库依赖静态库
2019-09-22 13:21:29group描述依赖的静态库 Main: main. cpp libTest.so libxxCheck.so gcc -g -Wall -std=c++ 11 -lstdc++ -o Main main. cpp -I ./ -L ./ -lshared -Wl,-rpath=. -ldl -rdynamic -lTest - lLogicCheck All: xx.o... -
编译多个可执行程序,需链接动态库静态库,且需先编译库,并且库与库之间存在依赖关系的makefile
2019-03-06 01:16:21本示例演示了编译多个可执行程序,需链接动态库,静态库,且需先编译库,并且库与库之间存在依赖关系的makefile的编写方式,makefile文件内部有详细的注释,目录下也有介绍文档,请务必按照里面的步骤操作,保证可以... -
编译protobuf静态库依赖顺序问题
2019-04-20 15:01:28在项目中要加入protobuf协议支持,在编译成功生成程序包动态库后,发现启动运行报错 未定义的protobuf符号xxx等等,用ldd查看so文件,发现确实提示了未找到。 大致的makefile文件如下: CXX=g++ CFLAGS= -g -Wall... -
iOS架构-cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库)(14)
2019-05-15 11:37:06cocoapods打包静态库(依赖私有库、开源库、私有库又包含静态库) -
openssl-1.1.1a编译静态库 + zlib-1.2.11编译静态库 (x86 x64)
2018-12-12 14:54:10openssl-1.1.1a编译静态库 + zlib-1.2.11编译静态库 (x86 x64) 自己编译 最新版本openssl 和 依赖的 zlib库 -
如何查看静态编译的依赖(所链接的库)
2020-02-25 09:01:54实际上,静态库不存在依赖,依赖是动态编译下被动态链接的库,可以使用ldd查看. 静态链接的话 所有需要的静态库会被添加到文件中,库名在连接的过程中会被剥除,如果文件包含debug 信息,可以通过查看符号的方式,对比静态... -
iOS 静态库(静态库依赖、三方依赖、资源处理等)
2019-01-14 20:20:50静态库动态库区别 2. 库的版本 3. iOS 设备的CPU架构 4. ARM处理器指令集 5. i386|x86_64 指令集 6. Xcode中指令集相关选项 二、打包framewor静态库 1. 创建项目-》创建静态库项目 2. 静态库如何开发调试?... -
ffmpeg vs2015 build x86/x64 静态库(.lib) 音视频/编解码
2021-12-20 03:16:51版本N104926-gc8b5f2848d,对应n4.4.1,最新编译,测试可用 生成独立的exe程序,无需引用avcodec.dll等一大堆动态库 【注意】相对于使用官方的动态库,需要额外附加一些依赖项,已写入txt一并放入压缩包中了 -
依赖静态库,编译生成动态库
2017-03-09 18:50:34直入主题,目标是依赖静态库,编译动态库,最终生成二进制文件。 文件目录如下: 文件内容组织: add.c #include "add.h" int add(int a, int b) { int c = a + b; return c; } add.h #ifndef __ADD__ #... -
openssl-1.1.1l 编译静态库 + zlib-1.2.11编译静态库 (x86 x64)
2021-12-02 19:09:06openssl-1.1.1a编译静态库 + zlib-1.2.11编译静态库 (x86 x64) 自己编译 最新版本openssl 和 依赖的 zlib库 -
【易语言插件】静态库调试支持插件.zip
2021-03-08 13:56:17众所周知,易语言需要静态编译才能调用静态库,导致我们在调试运行非常不方便。 前辈的黑月插件可以使之支持动态调试运行,但需要将库文件名填写为“静态库”,然后还需要写个配置文件“xxx.ini”也不太方便。 这... -
需链接动态库静态库,但不需编译库的makefile
2017-01-23 18:54:15本示例演示了需链接动态库静态库,但是不需要编译动态库静态库的makefile编写方式,makefile文件内部有详细的注释,目录下也有介绍文档,希望大家在遇到这种情况时,把本示例稍作修改,就可以运行起来 -
openssl编译成静态库被程序所依赖
2019-03-05 16:05:33openssl库是一个安全库,包含摘要、加密等算法的实现,许多程序都会依赖它,但是当程序迁移时(编译和运行环境不一样时),就会报出类似的错误:error while loading shared libraries: libcrypto.so.1.0.0: cannot ... -
vs2017编译的libcurl7.5.3静态库
2017-03-24 22:42:051. 给工程添加依赖库:项目->属性->链接器->输入->附加依赖项,ws2_32.lib;winmm.lib;wldap32.lib;libcurl_a.lib添加进去。 2. 加入预编译选项,项目->属性->c/c++ ->预处理器->预处理器定义,把;BUILDING_LIBCURL... -
linux动态库和静态库依赖问题
2018-06-17 08:45:20linux下动态库.so文件和.a文件是否是独立可用的? 比如我有个dynamic.so和static.o文件,这两个文件是否可能依赖于别的so和a文件,甚至有没有可能依赖于.cpp/.c文件,或者只可能依赖其中的一种?即so和a文件是否一定... -
静态库的编译和使用
2020-06-21 18:46:24静态库是在程序编译时直接将静态库编译进去,运行时不再需要将库的符号内容加载到内存,编译出来的程序占用空间也会变大。如果静态库修改了,就需要重新编译调用库的程序。 编译的话,直接就使用上次的代码进行编译... -
Android 静态库互相依赖问题
2020-07-31 15:20:32编译依赖关系 1 动态库 A 依赖于静态库B 静态库C 2 静态库B依赖于静态库C 3 静态库C依赖于静态库B 编译出错,提示某些符号未定义 题外话,在Android.mk/Android.bp当中,如果是静态库没有循环依赖,如果只是B依赖于C... -
VS 静态库lib如何依赖动态库dll
2021-05-08 18:46:58此时只能够把静态库所依赖的动态库也改成静态库,这样这个静态库才能被正常编译,否则编译的时候会报错,全部都是动态库预编译声明__declspec(dllimport). 有没有什么方法让静态库也能链接动态库呢? 有的。 #... -
mysqlconn-static vs2015静态库文件
2020-11-23 14:05:341. mysqlconn-static vs2015静态编译 2. 分为mt和md两种版本,按需链接即可。...4. 编译时,头文件需要包含include中的引用jdbc和boost库。 5. 由于是静态编译,所有需要包含预编译头:CPPCONN_LIB_BUILD -
golang 静态库的编译与使用
2020-04-24 17:25:40go tool 静态库编译与使用 可能是用的不多,搜了一圈例子很少,大多是那个在 windows 上使用的 demo 的例子,凑个热闹贡献一个 mac / linux 通用的例子吧,并没那么复杂 创建 hello 工程 首选创建一个 hello 工程... -
静态库调用其它静态库
2019-12-24 12:19:22编译静态库时只有编译过程,没有链接过程,静态库引用其它库并不会在编译的时候把引用的库函数编译到生成的lib中,只是简单的将编译后的中间文件打包,在编译最终的可执行项目(.exe和.dll)的时候,需要引用所有的...