
编译工具
zhoujiaxq
这个作者很懒,什么都没留下…
展开
-
在Makefile中使用$$
在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢,区别大了。不要认为在makefile的规则的命令行中使用$var就是将makefile的变量和shell共享了,这里仅仅是读取makefile的变量然后扩展开,将其值作为参数传给了一个shell命令。而$$var是在访问一个shell命令内定义的变量,而非makefile的变量。此外,如果某规则转载 2013-08-26 11:11:42 · 686 阅读 · 0 评论 -
VS2010命令行下查看虚函数表和类内存布局
VS2010命令行下查看虚函数表和类内存布局——《深度探索C++对象模型》读书札记系列 在学习多重继承下的Virtual functions时,需要分析派生类的虚函数表(vtable),但是在网上找了好几种Hack vtable方法,结果都不尽如人意。没想到MS Compiler(以VS2010为例)有打印vtable的编译选项,真是太好了!1. 打开“Visual Studio转载 2014-03-07 10:55:22 · 2213 阅读 · 0 评论 -
mips-linux-gcc编译器警告消除
这两天在公司就是忙活这些东西,记到blog上,免的以后忘了warning: "/*" within comment 举例: /************************************************/ /* /* save snmp entry data /* add by Tina Lee 2003/7/11 /******************转载 2014-05-16 16:19:54 · 1572 阅读 · 0 评论 -
linux下 gcc 默认搜索路径
如何指定GCC的默认头文件路径有大量的环境变量可供设置以影响 GCC 编译程序的方式。利用这些变量 的控制也可使用合适的命令行选项。一些环境变量设置在目录名列表中。这些名字和 PATH 环境变量使用的格式相同。特殊字符 PATH_SEPARATOR (安装编译程序的时候定义)用在目录名之间。在 UNIX 系统中,分隔符是冒号,而 Windows 系统中为分号。C_INCLUDE_PAT转载 2014-05-16 16:17:35 · 5268 阅读 · 0 评论 -
Linux下C++的通用Makefile与解析
本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。号称万能Makefile,一统江湖。我对原版的Makefile做了些修改。首先揭开它的庐山真面目:##################################################### Generic makefil转载 2014-05-16 13:54:00 · 14529 阅读 · 1 评论 -
Linux GCC编译和使用动态、静态链接库
在windows下动态链接库是以.dll后缀的文件,二在Linux中,是以.so作后缀的文件。动态链接库的好处就是节省内存空间。1、Linux下创建动态链接库在使用GCC编译程序时,只需加上-shared选项即可,这样生成的执行程序即为动态链接库。例如有文件:hello.c x.h main.c[plain] view plaincopyprint?转载 2014-05-15 14:58:49 · 783 阅读 · 0 评论 -
makefile函数集锦及条件判断
Makefile 常用函数表一、字符串处理函数1.$(subst FROM,TO,TEXT)函数名称:字符串替换函数—subst。函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。返回值:替换后的新字符串。2.$(patsubst PATTERN,REPLACEMENT,TEXT)函数名称:模式替换函数—patsubst。函数功能:搜索“TEXT”中转载 2014-05-16 13:53:17 · 8685 阅读 · 0 评论 -
ld.info链接脚本
ld.info链接脚本解读最近在看Linux内核时,总是遇到一些和连接脚本相关的东东,搞得人一头雾水,终于下定决心把它搞明白,写下一点心得,希望对和我一样的人有所帮助! 连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者是一个对符号的赋值.转载 2014-04-23 10:03:16 · 695 阅读 · 0 评论 -
Linux内核—— 必要的编译知识include/linux/compile.h
所有的内核代码,基本都包含了include/linux/compile.h这个文件,所以它是基础,涵盖了分析内核所需要的一些列编译知识,本博就分析分析这个文件里的代码:#ifndef __LINUX_COMPILER_H#define __LINUX_COMPILER_H#ifndef __ASSEMBLY__首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个转载 2014-04-23 10:25:56 · 4840 阅读 · 0 评论 -
VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
说明 $(RemoteMachine)设置为“调试”属性页上“远程计算机”属性的值。有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置。$(References)以分号分隔的引用列表被添加到项目中。$(ConfigurationName)当前项目配置的名称(例如“Debug”)。$(PlatformName)当前项目平台的名称(例如“Win32”)。$转载 2014-01-17 12:55:47 · 1206 阅读 · 0 评论 -
VS宏定义中的#,##
关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) \ do{ if (EXP) \ fprintf(stderr, "Warning: " #EXP "\n"); } \转载 2014-01-22 10:58:26 · 1478 阅读 · 0 评论 -
Linux 指定运行时动态库路径[-rpath]
众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下转载 2013-08-28 09:10:32 · 2522 阅读 · 0 评论 -
gcc头文件库文件搜索路径问题
我们编写程序的时候会用到三个东西:头文件,链接时候库文件,运行时动态库文件。对于上面3中,我认为头文件是预处理过程的,应该和编译器有关,而链接时候库文件当然是和链接器有关了,而动态库文件时和动态装载器有关的。制作程序时候:头文件寻找路径问题;1.首先从-I开始,这个是我们在编译的时候指定的2.GCC环境变量C_INCLUDE_PATH,CPLUS_I转载 2013-08-27 10:01:24 · 619 阅读 · 0 评论 -
BASH 中单括号和双括号
一. bash [ ] 单双括号基本要素:Ø [ ] 两个符号左右都要有空格分隔Ø 内部操作符与操作变量之间要有空格:如 [ “a” = “b” ]Ø 字符串比较中,> \Ø [ ] 中字符串或者${}变量尽量使用"" 双引号扩住,避免值未定义引用而出错的好办法Ø [ ] 中可以使用 –a –o 进行逻辑运算Ø [ ] 是bash 内置命令转载 2013-08-26 11:28:31 · 3457 阅读 · 0 评论 -
关于调用静态链接库LIB,提示重定义或库冲突的错误
在一个项目里使用了静态链接库,但是一编译就报错LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson 已经在 MSVCRTD.lib(MSVCR100D.dll) 中定义1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno 已经在 MSVCRTD.lib(MSVCR100D.d转载 2014-06-12 15:06:32 · 3796 阅读 · 0 评论