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

libstdc++ -不使用qmake静态链接

libstdc++是GNU C++标准库的实现,它提供了C++标准库的功能和特性。它包含了许多用于C++编程的类、函数和算法,可以帮助开发人员更方便地进行C++编程。

静态链接是一种将库文件的代码和应用程序的代码合并在一起的方式。使用静态链接,库文件的代码会被复制到最终生成的可执行文件中,使得可执行文件可以独立运行,不再依赖于外部的库文件。

在不使用qmake进行静态链接时,可以通过手动编写Makefile来实现静态链接。以下是一个示例的Makefile文件:

代码语言:makefile
复制
CC = g++
CFLAGS = -std=c++11 -Wall
LDFLAGS = -static-libstdc++

TARGET = myprogram
SOURCES = main.cpp
OBJECTS = $(SOURCES:.cpp=.o)

all: $(TARGET)

$(TARGET): $(OBJECTS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) -o $(TARGET)

.cpp.o:
	$(CC) $(CFLAGS) -c $< -o $@

clean:
	rm -f $(OBJECTS) $(TARGET)

在上述Makefile中,-static-libstdc++选项用于告诉编译器使用静态链接的方式链接libstdc++库。通过执行make命令,可以编译生成静态链接的可执行文件。

需要注意的是,静态链接会增加可执行文件的大小,并且在更新库文件时需要重新编译整个程序。因此,根据实际情况和需求,需要权衡使用静态链接的优缺点。

关于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档或者咨询腾讯云的客服人员获取更详细的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

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

2K10

c语言里面静态链接库的制作和使用

(4)动态链接库比静态链接库出现的晚一些,效率更高一些,是改进型的。现在我们一般都是使用动态库。...我们使用静态链接库看看是什么 情况(gcc中编译链接程序默认是使用动态库的): root@ubuntu-virtual-machine:/home/ubuntu# gcc hello.c -static...从中我们可以发现使用静态链接库生成的可执行的程序比较占用内存大小。 4.库函数的使用: (1)gcc中编译链接程序默认是使用动态库的,要想静态链接需要显式用-static来强制静态链接。...静态链接库的制作和使用 1.自己制作静态链接库: 这里我先在当前目录创建两个文件一个是hell.c ,另外一个是hell.h,然后在hell.c里面写上;  #include   void...: 上面创建好了静态链接库,现在我们就来使用这个静态链接库,然后我在当前目录下再创建一个目录叫做testlib,然后把hell.h和libhell.a移到这个目录下面同时在这个目录下面创建一个test.c

1.5K30
  • visual studio静态,动态链接库开发工具简单使用

    printf("num=%d\n",num); fun(); printf("num=%d\n",num); printf("st i=%d c=%c \n",s.i,s.c); } 5.以静态链接库方式使用这个库的程序代码...要给用户提供静态链接库,都要提供哪些文件呢?....ext.lib就是静态链接库。 其实,这就是一个静态链接的过程。   静态链接的第一步,怎么由ext.c生成obj文件?查msdn(或者 命令cl /?)...以下说的都是隐式链接 visual studio的动态链接使用很与众不同,竟然需要提供三种文件:.h+.lib+.dll文件,诡异的是,这个.lib文件和静态链接库里的.lib文件其实不一样!...参看csdn(http://msdn.microsoft.com/zh-cn/library/3y1sfaz2(v=vs.100).aspx)可知,和静态链接不同的是,动态链接需要对库的源代码进行改动,

    1.1K40

    Windows下Qt静态编译全解

    MinGW静态编译 1.设置MinGW的环境变量 2.设置目标平台 set QMAKESPEC=win32-g++ 3.修改mkspecs/win32-g++目录下的配置文件qmake.conf... 除去异常支持 -opensource 开源版 -static 创建静态库 -fast 快速配置,只生成Qt库文件及子目录的Makefile文件,其它的Makefile文件后面再使用qmake生成...-qt-sql-sqlite SQLite驱动支持 -plugin-sql-sqlite  SQLite链接插件支持 -no-qt3support  编译Qt3兼容库 -qt-zlib zlib...库 -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg 图形格式插件库 -no-webkit 编译webkit,此选项可极大加快编译速度,需要使用...WebKit的可以删除此选项 -qt-style-windowsxp -qt-style-windowsvista 支持XP和Vista主题样式 注意:使用静态编译的程序通常较大,建议发布前使用UPX

    61320

    qmake:变量手册

    使用 QMAKE_LRELEASE_FLAGS 向 lrelease 调用添加选项。 默认设置。...compile_included_sources:默认情况下,qmake 编译包含在其他源文件中的源文件。此选项禁用此行为。 链接库时,qmake 依赖于底层平台来了解该库链接的其他库。...如果是静态链接,除非使用以下 CONFIG 选项,否则 qmake 将不会获得相应信息: create_prl:此选项使 qmake 能够跟踪依赖项(其他库)。...注意:构建静态库时需要 create_prl 选项,而使用静态库时需要 link_prl 选项。 以下选项定义应用程序或库类型: qt:目标是 Qt 应用程序或库,需要 Qt 库和头文件。...146、QMAKE_RPATHLINKDIR 指定静态链接器的库路径列表以搜索共享库的隐式依赖项。 147、QMAKE_RUN_CC 指定构建对象所需的单个规则。

    3.8K20

    Qt5.11.2 & VS2017 & 64位版本 静态编译

    而如果想将生成的程序连同所需要的依赖库一起完整地打包成一个.exe可执行程序,那就需要使用静态编译。...1、问题描述: 使用VS编译程序时,运行库选择多线程(/MT),表示采用多线程静态release的方式进行编译。 但是,发现编译是不能通过的。...” 原因在于安装Qt时默认使用的是动态库,而且官方并没有提供编译好的静态库下载。...一会静态编译需要占用大量磁盘空间。(谨慎起见,请至少保证该磁盘下有10G左右空间。) 3、编译环境 以下是编译时需要的工具,在编译之前,请务必安装! 安装都比较简单。这里直接给出官网下载的链接。...所有的源文件必须链接相同的VC运行时库。

    1.1K20

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

    在嵌入式平台中,业务使用C语言开发,在交叉编译过程中会链接一个第三方的c++静态库,该第三放库使用了std,需要链接libstdc++的库,由于所在的嵌入式平台中没有libstdc++.so库,如果将libstdc...++.so拷贝板子上,需要占用5MB空间,很浪费空间,准备使用libstdc++静态库,在链接过程中出现如下问题;   整个业务的编译使用cmake构建,使用如下方式进行链接; add_executable...'libstdc++'的库,在cmake中有链接-static-libstdc++,而且交叉工具链中是有libstdc++.a库,当我们将cmake改为: add_executable(${target...'lstdc++'是gcc和g++都能识别,但是'-static-libstdc++'只有g++可以识别,而我的业务代码都是使用C语言编写的,在链接时cmake默认使用的是gcc,但是gcc不能识别'-...static-libstdc++',最终不会链接到实际的libstdc++.a,所以在链接时出现不能识别std的问题; 知道原因了,就很好解决了,在链接阶段将cmake的链接选项改为g++即可,添加如下一行就可以正常链接成功

    6.6K51

    QT5静态编译教程,主要针对vs2012

    — 本帖被 XChinux 设置为精华(2013-03-24) — QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错...,但是静态编译的话问题很多,我虽然不报错编译完成,但是使用没测试,已知的是我编译的版本qtwebkit使用时 QWEBVIEW控件在连接时会出错。...地址ICU http://site.icu-project.org/download   下来源码,用您所用的编译器还要再编译成lib或者dll,注意静态链接动态链接。...注意:以上的您要注意debug和release版本、、还有动态编译和静态编译、、、 4、配置环境变量,建议用个bat      附个我用的bat,上面两个链接也有bat脚本,您根据自己的位置自己修改吧...,这个是使用开源协议,并同意 -static 设置静态编译,动态编译的话,去掉 -platform win32-msvc2012  设置编译起类型,您根据情况歌换成win32-g++或者其他、、

    30930

    重写了llvm+clang+libc++和libc++abi的构建脚本

    由于之前整理的服务器框架已经完成了,就需要用各种静态分析工具跑一遍。原来的llvm+clang的编译脚本是从GCC那个脚本copy过来然后改的,使用的时候各种问题。所以干醋重新折腾一遍,重写了。...openmp我不用所以没加进去,反正加一下也麻烦。dragonegg的依赖过于奇葩,我也没加进去了,这也是个折腾的主儿,而且真的需要用gcc的前端+llvm的后端吗?有需要的人自己加吧。...的头文件,故而编译的时候直接把这个目录加到了C_INCLUDE_PATH里 使用动态库,原先使用静态库会导致编译出来的二进制非常大,现在全部使用动态库 CentOS 7下测试默认包+lld通过, 本地测试过的编译命令如下...clang -stdlib=libc++则需要加上-lc++ -lc++abi的链接选项,或者使用clang++ -stdlib=libc++ -lc++abi。...(无论如何-lc++abi都要手动加链接符号) 如果使用clang -stdlib=libstdc++则需要加上-lstdc++的链接选项,或者使用clang++ -stdlib=libstdc++

    2.1K20

    Win32编程之静态库编写与使用.动态链接库的编写与使用

    Win32编程之静态库编写与使用.动态链接库的编写与使用 一丶什么是静态库.什么是动态链接库.   ...动态链接库.也称为Dll. 为什么有了静态库还要有动态链接库. 原因是静态库优缺点的.所以才出了动态链接库补充这个缺点. 缺点:   1.代码体积大....使用静态库的程序编译出的体积很大.在汇编的层次中就是把静态库的代码跟可执行文件相链接了.   2.重复代码多.一个静态库可以有很多人编写.有得函数会有多次编写. 动态链接库就是解决上面缺点的....declspec(dllexport) int _stdcall RetMySubNumber(int a, int b); .cpp实现文件 #include "MyDllHead.h" //必须包含.包含则不会导出...PS: 静态lib库的代码使用的时候会跟exe链接在一起. 在汇编程序中看 就是 Call 地址.  而 dll库则是 Call [地址] 间接调用. 真正用到的时候才会把地址填写.

    73830

    Hello Qt——QMake用户指南

    A、处理静态数据 如果应用程序使用了任何静态数据,构建系统需要了解这些静态数据。这是因为Symbian系统会试图在没有使用静态数据的情况下节省内存。...此时,qmake会生成包含构建两种版本的规则的MakeFiles,使用make all可以调用。 当链接库时,qmake依赖于底层平台来了解库中链接的其它库。...但是,如果是静态链接,除非使用下列的CONFIG选项,否则qmake不会得到这些信息。 create_prl:本选项使qmake能够追踪这些依赖关系。...注意:构建一个静态库时,需要使用create_prl;使用一个静态库时,需要使用link_prl。 DEFINES qmake会将DEFINES变量的值作为C编译器预处理宏(-D)添加。...例如,当静态链接一个库时,没有链接到其他库,因此不会创建与这些库的依赖关系。但是,后续链接到该库的应用程序需要知道在哪里可以找到静态库所需的符号。

    6.1K20

    qmake使用

    前言 在linux环境下进行程序开发时,经常需要使用makefile管理编译代码,特别是一些大型工程,而makefile工具语法晦涩深入研究较为困难,好在有很多工具可以自动生成makefile,qmake...qmake特点 为不同的平台的开发项目创建makefile。 可以供给任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。.../ThirdPartyLib/openrave-0.9/lib #相对路径是相对工程文件pro的路径 编译时静态链接 # QMAKE_LFLAGS += -Wl,-rpath=../../../...../ThirdPartyLib/openrave-0.9/lib/ #相对路径是相对工作路径 运行时动态链接 # QMAKE_LFLAGS += -Wl,-rpath=\\\$\$ORIGIN/jsoncpp...可以使用qmake -h查看具体的说明 qmake生成makefile 调试经验 在linux平台下可以用ldd命令查看so库所依赖的其他so库,readelf -d libxxx.so | grep

    98720

    Qt高级——QMake快速入门

    如: TARGET = helloworld 最后就是配置CONFIG变量,对于Qt应用程序来说,给CONFIG赋值qt,QMake链接相关的库,并确保moc和uic相关的连编规则生成到MakeFile...过程 如果某个文件不存在,生成MakeFile文件。...RES_FILE:应用程序链接的资源文件,仅支持Windows。 开发者可以直接使用有值的qmake系统变量,不必指定任何值。qmake会自动增加需要的默认值。...dll:库是一个共享库 staticlib:库是一个静态库 plugin:库是一个插件,也支持dll选项 VERSION变量指定库的版本信息 库的目标文件名是平台独立的。...例如,X11和Mac OS X,库名称使用lib 前缀,Windows平台上,库文件名增加任何前缀。 3、QMake创建插件 插件使用lib模板构建,告诉qmake生成一个工程的MakeFile。

    1.4K21

    使用gulp-replace实现全局替换hexo静态文件jsd cdn加速链接(包括插件)

    自从jsd官方的ICP被吊销以后,国内的大部分网站速度越来越慢,本文提供一个简单的可行性办法 使用前您最好先了解gulp使用 gulp 压缩博客静态资源 | Akilar の糖果屋 您可以参考闰土的欲善其事...gulp-replace'); gulp.task('templates', async() => { gulp.src('public/**/*.*') .pipe(replace('这里填写jsd官方域名', '您需要使用的...true }; }); gulp.task("default", gulp.parallel('templates')); PLAINTEXT 1 gulp 即可替换成功(会全局替换所有文件的jsd链接...true' run: | npm install gulp-cli -g #全局安装gulp npm install --save npm i gulp-replace --save - name: 生成静态文件...sudo su root git config --global user.name "您的github名" git config --global user.email "您的邮箱 以下是参考文档 使用

    1.4K40

    qmake:高级用法

    二、安装文件 在 Unix 上经常使用构建工具来安装应用程序和库,例如通过调用 make install。qmake 有一个安装集的概念。...四、库依赖 通常在链接库时,qmake 依赖于底层平台来了解该库链接到哪些其他库,并让平台将它们拉入。然而,在许多情况下,这还不够。...例如,在静态链接库时,不会链接其他库,因此不会创建对这些库的依赖项。如果明确启用跟踪,qmake 会在适当的情况下尝试跟踪库的依赖项。 第一步是在库本身中启用依赖项跟踪。...第二步是在使用静态库的应用程序中启用此元信息的读取: CONFIG += link_prl 启用此功能后,qmake 将处理应用程序链接的所有库并找到它们的元信息。...qmake使用它来确定相关的链接信息,特别是将值添加到应用程序项目文件的 DEFINES 和 LIBS 列表中。

    1.8K10

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

    CMake 构建脚本 CMakeList.txt 链接静态库 : # 链接函数库 # 参数 1 : 本构建脚本要生成的动态库目 标 # 参数 2 ~ ... : 后面是之前预编译的动态库或静态库...特别注意 : 使用这种方法引入动态库 , 在 6.0 以上的系统是无法使用的 , 推荐使用 set() 设置 -L 参数的方式引入动态库 ; # 设置变量 # CMAKE_CXX_FLAGS 表示会将...链接函数库 ---- 链接函数库 : 这里注意第一个参数必须是要生成的动态库模块 ; # 链接函数库 # 参数 1 : 本构建脚本要生成的动态库目标 # 参数 2 ~ ... :..., 配合该配置使用 add_library( # 设置引入的静态库名称 add # 设置引入的函数库类型为静态库 STATIC...博客资源 ---- CSDN 博客地址 : 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径

    2.8K40

    Windows下 Qt 静态编译连接

    关于Windows下 Qt 静态编译连接,似乎一直没有静态编译Qt的需求:一不在没有管理员权限的机器上使用,二制作绿色软件,三动态编译工作得很好,再配合 nsis 制作一个安装包,有什么必要静态编译呢...如果还想去除该依赖,需要在静态编译Qt之前手动修改 %QTDIR%\mkspecs\win32-msvc2008\qmake.conf  将 QMAKE_CFLAGS_RELEASE 和 QMAKE_CFLAGS_DEBUG...注意:对 qmake.conf 的修改最好放在运行 configure 之前,不然的话,修改后还需要手动运行(原因你知道的 ;-) ) qmake -r如何加快编译 编译 Qt,应该是一个比较费时费力费空间的...插件都成静态库了,无法动态加载了(或许已不能被称为插件了) 看 QtPlugin 的Manual,有关于静态插件的使用介绍 看例子中 tools/plugandpaint 例子,使用静态插件 常用插件...静态编译时插件的使用(比如,jpeg和gb2312的支持): 在 cpp 文件(main.cpp)内添加语句 #includeQ_IMPORT_PLUGIN(qjpeg) Q_IMPORT_PLUGIN

    38420
    领券