首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux基础——gcc编译静态与动态(共享

gcc编译器 1、gcc工作流程 2、gcc常用参数 参数 用途 -v 查看版本 -o 产生目标文件 -I+目录 指定头文件目录 -D 编译时定义宏 -00/-01/-03 没有优化/缺省值.../优化级别最高 -Wall 提示更多警告信息 -c 只编译子程序 -E 生成预处理文件 -g 包含调试信息 静态 1、静态的命名格式 lib + 的名字 + .a 例:libMyTest.a...优点: 寻址方便,速度快 在链接时被打包到可执行文件中,直接发布可执行程序即可以使用 缺点: 静态的代码被加载到可执行程序中,因此体积过大 如果静态的函数发生改变,必须重新编译可执行程序 3、静态的制作与使用...优点: 节省内存 易于更新,不用重新编译可执行程序,运行时自动加载 缺点: 延时绑定,速度略慢 3、动态的制作与使用 测试代码的目录结构与静态相同。...ldd app可以查看当前的链接情况 第一种方法: export LD_LIBRARY_PATH=自定义动态的路径 (只能起到临时作用,关闭终端后失效) LD_LIBRARY_PATH : 指定查找共享

7.6K40

linux下编译qt5.6.0静态

linux下编译qt5.6.0静态 编译QT是一件比较麻烦的事情。所以如果没有必要,就不要编译了。如果你只需要使用QT的一些基本功能,那么就只编译源码目录下的qtbase目录下的东西即可。...-static 创建并使用QT静态 -no-largefile 禁用大文件支持 + -largefile 启用QT访问大于4 GB的文件功能 -no-accessibility 不编译的可访问性支持...可以进这个目录修改qmake.conf文件来指定编译器和编译选项。 如果同同时指定了-release和-debug使用的是后者。...意思是警告:使用静态链接将禁用动态加载插件的使用。确保导入所有需要的静态插件,或者编译所需的模块到中。这不是一个好的做法。 ?...在Qt Creator中使用编译出的QT 编译完成后,使用make install进行安装。如果你没有指定安装的目录,可能需要root权限。 可以先去安装目录中的目录结构 ?

63330

使用静态提高TouchGFX的编译速度

但是由于touchgfx的代码量过于庞大,对于编译的速度来说还是不够快,接下来使用静态的方式更进一步提升开发效率。...v4.15和 STM32CubeMX V6.0.1 代码下载: 示例代码: https://download.csdn.net/download/sinat_31039061/13057209 一、制作静态工程...将需要调试的代码设置为不参与编译 ? 4.设置输出为静态文件 ? 5.编译生成静态 ? 二、制作应用工程 1. 切换到application工程 ? 2....将不需要调试的代码设置为不参与编译 ? 3. 添加上个工程生成的 ? 在这里插入图片描述 4....由于application工程参与编译的代码大量减少,所有编译会瞬间完成 平时可以根据项目的进度,动态调整参与编译静态 三、通过VSCODE编辑代码 通过VSCODE的keil插件打开工程,可以发现有三个工程

1.3K30

go语言静态编译和使用

27 Apr 2018 go语言静态编译和使用 本文主要介绍go语言静态编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下...现在,需要将demo.go编译静态demo.a,不提供demo.go的源代码,让main.go也能正常编译运行,详细步骤如下: 1 编译静态demo.a >go install demo 在命令行运行...3 链接main.o >go tool link -o main.exe -L E:\share\git\go_practice\pkg\windows_amd64 main.o -L选项指定静态demo.a...但是,如果删除了静态demo.a,就不能编译main.go,如下: >go tool compile -I E:\share\git\go_practice\pkg\windows_amd64 main.go...main.go:3: can't find import: "demo" 以上就是go语言静态编译和使用方法,下次介绍动态编译和使用方法。

3.4K130

Linux gcc编译生成静态和共享动态的过程

这篇文章主要通过实例演示在Linux下如何使用gcc分别编译生成静态和动态文件以及其它程序如何使用这个生成的静态和动态。...-lmyhello 注意:如果出现下面这个错误,那么是由于程序链接需要静态,系统没有安装静态导致报错: [root@typecodes howto_gen_static_lib]# gcc -o hello...3.1 直接编译生成symbolic link动态文件 ##### 生成hello.o目标文件 [root@typecodes ~]# gcc -c -fPIC hello.c ##### 生成动态文件...lib: 本地/第三方函数 4 总结(update 2017.04.18 12:10) 小节2中讲述了静态文件的生成方法,小节3中讲述了动态的生成方法。...1、添加路径到 /etc/ld.so.conf.d/ 目录下的配置文件中,然后执行命令ldconfig; 2、添加路径到 LD_LIBRARY_PATH 环境变量中; 3、在编译链接命令中加入参数

11810

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

Android Studio 中 CMake 引入静态流程 III . 指定 CMake 最小版本号 IV . 导入函数 ( 静态 / 动态 ) 编译配置 V ....导入函数 ( 静态 / 动态 ) 编译配置 ---- 函数 ( 静态 / 动态 ) 编译配置 : 函数编译需要传入 3 个参数 ; ① 参数 1 : 设置生成的动态名称 ; ② 参数 2...C++ 的参数传给编译器 # CMAKE_C_FLAGS 表示会将 C 参数传给编译器 # 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 在 该参数后面指定的路径...表示会将 C 参数传给编译器 # 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 在 该参数后面指定的路径 # CMAKE_SOURCE_DIR 指的是当前的文件地址...博客资源 ---- CSDN 博客地址 : 【Android NDK 开发】Android Studio 使用 CMake 导入静态 ( CMake 简介 | 构建脚本路径配置 | 引入静态 | 指定静态路径

2.4K40

再议GCC编译时的静态依赖顺序问题

GCC编译时的静态依赖次顺问题.pdf 假设有如三个源代码文件: $ cat a.cpp void a() { } $ cat b.cpp extern void a(); void b... -g -c $^ b.o: b.cpp g++ -g -c $^ x.o: x.cpp g++ -g -c $^ clean: rm -f a.o b.o x.o x 使用上面的Makefile编译...1 这个问题的原因是b.cpp依赖a.cpp,gcc要求(实际是ld要求)libb.a须放在liba.a前面,即需要改成:g++ -g -o x x.o libb.a liba.a,也就是被依赖的需要放在后头...这是最常规的解决办法,除此之外,只需要加入--start-group和--end-group两个链接参数,即可保持被依赖的放在前头,也就是改成如下即可:g++ -g -o $@ -Wl,--start-group...位于“--end-group”之后的仍然要求被依赖的放在后头。

3.5K40

编译 EasyHook 32-bit64-bit 静态 Lib

最近公司让我做一个 HOOK 的名单功能,顺便就研究了一下 EasyHook 的静态编译和使用,也弥补一下曾经再这方面耗费的心血。下图是 HOOK 成功后 DebugView 的输出。...配置 EasyHook 静态编译环境 首先去官方下载 EasyHook 源代码到本地,使用 VS2015 打开项目(目前官方是 VS2013 编译的,最低不能低于 VS2010 SP1,因为官方最新代码中引入了...切换到 生成事件->后期生成事件 选项卡中,删除所有配置下的所有平台中的命令行属性(这个选项是在项目生成后执行的批处理命令,主要是拷贝一些文件到指定目录,我们用不到,所以删除) 切换到 管理器->命令行...至此所有配置和属性都修改完了,接下来我们要动一下源代码,不然编译后的 Lib 也是用不了的。...Lib 编译先到这里,至于 Lib 的使用,我写了一个 Example,请大家访问 github 下载源代码自行编译调试:https://github.com/nmgwddj/EasyHook。

25220

Qt 5.11.1 静态编译

请注意 -prefix "D:\Documents\Qt\Qt5.11.1_MinGW_Static" 参数,这里指定了最终生成的静态编译文件的位置,最后一步 mingw32-make install...大概编译时间 2 – 3 小时。 mingw32-make -j8 ?...mingw32-make install 配置 Qt 打开 Qt Creator 增加静态配置,打开工具->选项菜单,进入构建和运行->Qt Versions 选项卡。...添加你刚才编译好的静态目录下的 qmake.exe。 ? 添加完成后切换到构建和套件选项卡,接着添加一个构建套件,注意调试器、编译器什么的都要选择好,不然无法使用: ?...静态编译项目 打开你的项目在项目设置中就能看到可以使用的静态构建套件了。 ? 配置好静态编译的构建套件后,项目下方就可以选择这个套件来生成项目了。 ?

6K20

Qt 5.11.1 静态编译

请注意 -prefix "D:\Documents\Qt\Qt5.11.1_MinGW_Static" 参数,这里指定了最终生成的静态编译文件的位置,最后一步 mingw32-make install...大概编译时间 2 – 3 小时。 mingw32-make -j8 ?...mingw32-make install 配置 Qt 打开 Qt Creator 增加静态配置,打开工具->选项菜单,进入构建和运行->Qt Versions 选项卡。...添加你刚才编译好的静态目录下的 qmake.exe。 ? 添加完成后切换到构建和套件选项卡,接着添加一个构建套件,注意调试器、编译器什么的都要选择好,不然无法使用: ?...静态编译项目 打开你的项目在项目设置中就能看到可以使用的静态构建套件了。 ? 配置好静态编译的构建套件后,项目下方就可以选择这个套件来生成项目了。 ?

2.1K20

浅谈 Qt 静态编译

浅谈 Qt 静态编译 本文要讲解的是Qt 静态编译,Qt中默认的应该是动态编译,那么本文就浅淡的介绍一下静态编译,先来看内容。...Qt 静态编译是本文要介绍的内容,首先,你应该该知道什么叫静态引用编译、什么叫动态引用编译。我这里只是简单的提提,具体的可以google一下。 动态引用编译,是指相关的,以dll的形式引用。...动态编译的Exe程序尺寸比较小,因为相关的都没有包含进来。当然,程序发布的时候,还要把相关的也一并发布出去。 静态引用编译,是指把相关的也一并引入Exe文件。...很显然,我们编译的所谓静态Qt程序,一样要背着微软的C Runtime到处跑,还不够“真正”的静态。 怎么才能做成完全的静态呢?...我们只要在这里把-MD改成-MT,就会使用静态c runtime编译Qt了。我们当然不可能一个一个地替换这些makefile,关键是找出生成这些参数的模板文件。

65420

Windows 编译 openssl-1.0.2p静态 3264、debugrelease、MTMTd

最近要用到 libeay32.lib、ssleay32.lib 两个静态文件,因为以前项目中其中一个文件在 64 位编译时选择的不是 MTd,而导致我引入该以后提示运行时和其他声明冲突,其实实际原因就是生成选项不一样...最终我还是决定自己编译 openssl 的来使用。...Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts 下,如果想编译 32 位的静态就使用 VS2013 x86 本机工具命令提示...,如果想编译 64 位,就使用 VS2013 x64 本机工具命令提示。...修改完成执行如下命令开始编译(如果想编译成 dll,则执行 nmake -f ms\ntdll.mak,编译前要修改 ms\ntdll.mak 将 CFLAG 的 /MD 属性修改为 /MT,与你调用项目匹配

5.6K20
领券