首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

cmake链接静态-static-libstdc++问题

在嵌入式平台中,业务使用C语言开发,在交叉编译过程中会链接一个第三方的c++静态,该第三放使用了std,需要链接libstdc++的,由于所在的嵌入式平台中没有libstdc++.so,如果将libstdc...++.so拷贝板子上,需要占用5MB空间,很浪费空间,准备使用libstdc++的静态,在链接过程中出现如下问题;   整个业务的编译使用cmake构建,使用如下方式进行链接; add_executable...; undefined reference to `std::__cxx11::basic_string, 这个错误的原因是不能识别std,即没有链接...'libstdc++'的,在cmake中有链接-static-libstdc++,而且交叉工具链中是有libstdc++.a,当我们将cmake改为: add_executable(${target...'lstdc++'是gccg++都能识别,但是'-static-libstdc++'只有g++可以识别,而我的业务代码都是使用C语言编写的,在链接cmake默认使用的是gcc,但是gcc不能识别'-

6.6K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    cmake 添加头文件目录,链接动态、静态

    cmake 添加头文件目录,链接动态、静态 cmake 添加头文件目录,链接动态、静态 1. 添加头文件目录INCLUDE_DIRECTORIES 2....env目录,而不是常见的/usr/、/usr/local等目录,使用cmake进行编译时需要注意头文件文件的目录的设置。...cmake 添加头文件目录,链接动态、静态 罗列一下cmake常用的命令。 CMake支持大写、小写、混合大小写的命令。 1....(myProject libcomm.a) # 显示指定链接静态 target_link_libraries(myProject libcomm.so) # 显示指定链接动态 # 再如: target_link_libraries...,链接动态、静态 cmake 链接动态链接 cmake 3.19官网帮助文档 Getting started with cmake CMake projects in Visual Studio Configure

    24.8K11

    cmake:动态链接(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++

    tcmalloc.a也可以以静态链接的方式加入应用程序中,大概因为使用太方便,网上关于这方面的介绍都是一笔带过,但是如果要在动态 (so)中静态编译tcmalloc,却是有所不同的。...于是我觉得用静态链接方式将tcmalloc编译到so中比较好,这样这个动态以比较独立的方式发行,不再依赖系统中是否安装了tcmalloclibunwind。...下面是我的CMakeLists.txt中关于静态连接tcmalloclibstdc++的代码。...(so的代码是以C++11写的,所以还要依赖于libstdc++,所以我打算把libstdc++也以静态方式连接到程序中) ##判断操作系统类型 if(CMAKE_SYSTEM_NAME MATCHES...总结 如果在可执行程序中静态链接tcmalloc时,用默认参数编译tcmalloc就好了,无需带-fPIC参数, 但是在动态(so)中静态链接tcmalloc,必须要用-fPIC重新编译tcmalloc

    2K10

    【Android NDK 开发】Android Studio 使用 CMake 导入静态 ( CMake 简介 | 构建脚本路径配置 | 引入静态 | 指定静态路径 | 链接动态 )

    CMake 简介 II . Android Studio 中 CMake 引入静态流程 III . 指定 CMake 最小版本号 IV . 导入函数 ( 静态 / 动态 ) 编译配置 V ....Android Studio 中 CMake 引入静态流程 ---- Android Studio 中 CMake 引入静态流程 : 1 . build.gradle 配置 CMake 编译选项 :...CMake 构建脚本 CMakeList.txt 链接静态 : # 链接函数 # 参数 1 : 本构建脚本要生成的动态目 标 # 参数 2 ~ ... : 后面是之前预编译的动态静态...链接函数 ---- 链接函数 : 这里注意第一个参数必须是要生成的动态模块 ; # 链接函数 # 参数 1 : 本构建脚本要生成的动态目标 # 参数 2 ~ ... :.../jniLibs/armeabi-v7a") # 链接函数 # 参数 1 : 本构建脚本要生成的动态目 标 # 参数 2 ~ ... : 后面是之前预编译的动态静态

    2.8K40

    CMake静态顺序

    前言 C/C++程序的许多同学被静态的依赖折腾,因为默认情况下要求被依赖的放在依赖它的后面,当一个程序或共享依赖的静态较多时,可能会陷入解决链接问题的坑中。...但也可以偷懒,不关心静态的顺序问题,ld为此提供了start-groupend-group两个选项,让包含在这两者间的静态顺序可以随意。...方法 以CMake为例,假设程序x依赖三个静态:libX1.a、libX2.alibX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.alibX1.a,正常情况下的...,--start-group libX2.a libX1.a libX3.a -Wl,--end-group 附1:链接静态的顺序问题 在链接静态时,如果多个静态之间存在依赖关系,则有依赖关系的静态之间存在顺序问题.../abc -Wl,-rpath=/data/abc 部分库链接它的静态,部分库链接它的共享: -Wl,-static -lb -Wl,-call_shared -la -lz 指定链接器: -Wl,

    6.7K50

    CMake 静态与动态构建

    在前面一篇文章写了如何使用CMake编译“hello world”。这一篇写写构建静态动态。...上一文章链接:《CMake,大型项目采用的构建工具》 对于静态动态的了解,可以看看之前的文章: 静态:《静态链接的实现》 动态:《动态链接的实现》 在上一篇文章中,我们说了内部构建和外部构建的区别...$ cd lib $ ls CMakeFiles cmake_install.cmake librice.a Makefile $ 编译完,在lib目录下生成了librice.a这个静态。...STATIC,静态 MODULE,在使用 dyld 的系统有效,如果不支持 dyld,则被当作 SHARED 对待。...EXCLUDE_FROM_ALL,参数的意思是这个不会被默认构建,除非有其他的组件依赖或者手工构建。 根据ADD_LIBRARY指令的描述,在上面的例子中,很清楚的理解是生成静态的操作。

    1.8K20

    静态链接动态链接的区别

    1、链接概述Linux下得有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。...动态链接的加载方式有两种:隐式加载显示加载。注意:linux下进行连接的缺省操作是首先连接动态,也就是说,如果同时存在静态动态,不特别指定的话,将与动态相连接(见本文第四部分)。...2、静态链接下面就通过实际的例子来向大家演示一下,该怎样编译使用静态动态链接:2.1、编辑测试文件二个文件:add.c、 sub.c、add.h 、sub.h main.c/*add.h *...快看看错误提示,原来是找不到动态文件libmyhello.so。程序在运行时,会在/usr/lib/lib等目录中查找需要的动态文件。若找到,则载入动态,否则将提示类似上述错误而终止程序运行。...在使用时应包含的头文件Winbase.h(include Windows.h)dlfcn.h5、特殊情况我们回过头看看,发现使用静态隐式方式使用动态时编译成目标程序使用的gcc命令完全一样,那当静态动态同名时

    8.3K21

    【Linux】软硬链接静态

    静态   在Linux系统中,文件分为静态(Static Libraries)动态(Dynamic Libraries)。这两种类型的各有优缺点,适用于不同的场景。...缺点: 每个使用该的程序都会有一个的副本,这会导致磁盘空间的浪费。 如果静态需要更新,那么所有使用这个的应用程序都需要重新编译链接。....a) 使用静态进行链接时,可以使用 -l -L 选项指定文件的位置名称,-l指定的名字 gcc在查动静态时不会在当前目录下查,所以我们需要指定路径 方法二:将安装到系统中直接使用...可以使用ls命令检查静态文件是否已经复制到系统目录中,例如: ls /lib64/libexample.a # 检查静态文件 在编译链接其他程序时,可以使用-l选项指定使用安装的静态...-lexample 链接时需要省去前缀lib后缀.a,动态也是一样,直接 -lexample即可 这样,就可以将静态安装到系统中,并且可以直接在其他程序中使用该

    2400

    静态链接

    同时所带来的好处在于,头文件文件相结合的访问机制。...文件用于程序的链接阶段,但编译器提供有 2 种实现链接的方式,分别是静态链接方式动态链接方式,其中采用静态链接方式实现链接操作的文件,称为静态链接;采用动态链接方式实现链接操作的文件,称为动态链接...如果若干模块中有一个模块在库中不存在,ar显示一个错误消息,并不替换其他同名模块。默认的情况下,新的成员增加在库的结尾处,可以使用其他任选项来改变增加的位置。  参数c:创建一个。...直接在GCC参数里加上-static相应的静态链接即可。...-L(大写的 L)选项用于向 GCC 编译器指明静态链接的存储位置; -l(小写的 L)选项用于指明所需静态链接的名称,注意这里的名称指的是 xxx 部分,且建议将 -l xxx 直接连用(即

    1.7K20

    C语言 | 什么是静态链接动态链接

    今天分享的是静态链接动态链接的相关知识,并且自己动手写一个简单的静态函数动态函数,来体验这个流程。 首先要从函数的发明开始说起。...这时候的解决方案就是以(主要有2种:静态动态)的形式来提供。 比较早出现的是静态链接。...商业公司通过发布.a文件.h头文件来提供静态给客户使用。动态链接静态链接出现的晚一些,效率更高一些,是改进型的。现在我们一般都是使用动态。...这个.a文件就是静态文件,lib后面的是文件名称。制作出来了静态之后,发布时只需要发布.a文件.h文件。以上就是静态链接的制作过程。...以上就是今天的内容,主要是介绍了函数的来源背景知识,以及静态链接动态链接的制作及使用方法。

    4.4K40

    【Linux】动静态以及动静态链接

    静态与动静态链接 在Linux下共分为两种,一种是动态,另一种为静态。其实我们可以通过后缀就可以区分该是否为动态。...动态的命名一般为xxxlibx(这里的x是指语言).so,静态一般为:xxxlibx.a 动态与动态链接 感性理解 网吧(动态/共享) 我们可以将动态看作是学校附近的一个网吧,网吧里有很多的电脑...静态静态链接 感性理解 感性理解就是将网吧里我们最喜欢的那台电脑给买回来,放在宿舍里供自己玩耍。...理性理解 静态专门让编译器对用户的程序进行静态链接,在链接时,将静态中所需要的完整代码给拷贝到自己的可执行程序内部中。...静态链接的优缺点 缺点 最明显的缺点就是由于自身拷贝问题,拷贝的是所有所需要的代码到程序中,会比较浪费空间。

    4.9K50

    【Linux】基础IO --- 软硬链接、acm时间、动静态制作、动静态链接、动静态加载原理…

    五、静态静态链接(ar指令,将.o文件进行归档) 1.制作静态(打包压缩.h文件.o文件,形成头文件文件集合) tar命令详解,打包、压缩、解包 1..../mylib/include/ 2.2 链接错误:函数的未定义引用(文件找不到,搜索路径) 1. 指令执行后产生了链接错误,也就是说预处理、编译、汇编阶段已经没有问题了。.../mylib/lib/ 仅仅指明文件路径,系统依旧报链接错误。 3....如果只提供静态,那gcc也没辙,只能静态链接。 如果动静态都给gcc,那gcc遇到动态就动态链接,遇到静态就将代码进行复制,实现静态链接。 3....静态不需要加载,在加载程序也就是编译链接时,系统就会将静态的代码拷贝到可执行程序的代码段里面,因为可执行程序中没有栈堆段,只有代码段、数据段(可以细分为.data.rodata段)BSS段。

    3.6K30

    linux如何查看so已加载_cmake生成静态

    Linux程序运行找不到动态.so文件的三种解决办法 方法一:添加环境变量 子招数1. 添加当前用户当前终端的环境变量-临时 export LD_LIBRARY_PATH=/home/czd/......#.so file path 使其生效 source /etc/profile 如不能生效,请重启 方法二:复制so文件到lib路径 linux系统的so一般存储与“/usr/lib/”路径中,可将动态复制到该路径中...编辑链接配置文件 vim /etc/ld.so.conf 步骤2. 确认内容是否为如下,不是则修改为如下:保存并退出 include /etc/ld.so.conf.d/*.conf 步骤3....执行命令时期生效 sudo ldconfig 程序在运行时寻找so就会到添加的目录中寻找。 原创文章,转载请注明出处 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191977.html原文链接:https://javaforall.cn

    5.5K30

    【Linux】软硬链接与动静态

    接下来我们看一个现象:为什么目录文件硬链接数为2?  答案是很简单,因为每一个目录文件,即使是个空目录,里面也一定有如下内容:当前路径文件.上级路径文件..。  ...又分为动态静态,两者的优缺点在之前的文章已经详细讲解>,这里主要讲如何的使用原理。...将静态与头文件压缩后发送给他人即可供他人使用 这里我简单举个例子: 假如我自己写了一个AddSub接口的实现,然后其他人想直接用我们的接口,此时我们想在不将方法的具体实现暴露出来,仅仅是将接口的功能给他人使用...动态的打包 上面讲了静态的打包使用,接下来将动态的打包使用,以及动态链接的原理。...动静态链接的原理 为什么静态链接生成的可执行程序,不会依赖文件呢?

    21430
    领券