
c-c++编译
蓝鲸123
做更好的自己
展开
-
gcc 中的-L、-rpath和 -rpath-link的区别
本文将通过实验的方法找到三种方式的区别。-L1.1 deps.cc#include <stdio.h>void deps() { printf("deps.\n");}parent.cc#include <stdio.h>void deps();void parent() { printf("parent.\n"); deps();}test.cc#include <stdio.h>void parent();int main原创 2020-07-08 15:04:20 · 1762 阅读 · 0 评论 -
GCC 编译常用的选项
文章目录gcc 制作Library 分为 static、shared、dynamically loaded1.static libraries1.1 编译1.2 使用2. shared library2.1 编译2.2 使用Dynamically loaded libraries3.1 使用方式部分GCC选项链接Warningsgcc 制作Library 分为 static、shared、dynamically loaded1.static librariesStatic 链接库用于静态链接,简单讲是原创 2020-07-07 16:54:16 · 1636 阅读 · 0 评论 -
g++ 常用命令选项
选项 解释-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。-c 只编译并生成目标文件。-DMACRO 以字符串”1”定义 MACRO 宏。-DMACRO=DEFN 以字符串”DEFN”定义 MACRO 宏。-E 只运行 C 预编译器。-g 生成调试信息。GNU 调试器可利用该信息。-IDIRE...原创 2019-01-18 15:52:38 · 358 阅读 · 0 评论 -
c 编译选项-funroll-loops
一.循环展开循环展开可以减少循环的次数,对程序的性能带了两方面的提高。一是减少了对循环没有直接贡献的计算,比如循环计数变量的计算,分支跳转指令的执行等。二是提供了进一步利用机器特性进行的优化的机会。.优化后:void sum4(vec_ptr v,data_t *dest){int i;int len=vec_length(v);int limit=len-3;data_t *da...原创 2019-01-18 15:48:48 · 3323 阅读 · 0 评论 -
linux编译动态库之fPIC
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加fPIC选项即使不加fPIC也可以生成.so文件,但是对于源文件有要求,例如因为不加fPIC编译的so必须要在加载到用户程...转载 2019-01-18 15:46:11 · 862 阅读 · 0 评论 -
Makefile中的wildcard用法
在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN…) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。如果不存在任何符合此模式的文件,函数会忽略模式字符并返回空。需要注意的是:这种情况下规则中通配符的展开和...转载 2019-01-18 15:42:57 · 291 阅读 · 0 评论 -
makefile下$^,$@,$?,$<,$(@D),$(@F)定义使用详解
变量定义:$^所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。$@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合$?所有比目标新的依赖目标的集合。以空格分隔。$<依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模...转载 2019-01-18 15:36:41 · 6257 阅读 · 0 评论 -
makefile里PHONY的相关介绍
Phony TargetsPHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如: clean: rm *.o temp因为"rm"命令并不产生"clean"文件,则每次执行"make clean"..转载 2019-01-18 15:32:17 · 780 阅读 · 0 评论 -
gcc编译选项-Wl
转自:https://blog.youkuaiyun.com/wang_hufeng/article/details/53899120-Wl选项告诉编译器将后面的参数传递给链接器。-soname则指定了动态库的soname(简单共享名,Short for shared object name)-Wl 表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一...转载 2018-10-24 18:06:27 · 1370 阅读 · 0 评论 -
关于linux下使用动态库(-Wl,-rpath)
转自:http://blog.youkuaiyun.com/dbzhang800/article/details/6918413动态库常规的搜索路径:程序构建时通过 RPATH 指定的目录LD_LIBRARY_PATH 环境变量中冒号分割的目录文件 /etc/ld.so.cache列出的库(使用工具ldconfig维护)程序构建时 RUNPATH 指定的目录(fix me)目录 /lib目录 ...转载 2018-10-24 18:00:56 · 5308 阅读 · 0 评论