编译连接(gcc 等)
编译连接(gcc 等)
hjjdebug
西方用26个字母表示世界,计算机用0,1两个数字表示世界,大道至简!
人类用6号元素碳来思考, 计算机用14号元素硅来演算,精妙绝伦!
展开
-
gcc 添加第三方包含头文件,及第三方库路径方法
gcc 添加第三方包含头文件,及第三方库路径方法编译了一个第三方库, ffmpeg, 把它放倒了以下目录:/opt/ffmpeg_build自此,凡引用ffmpeg 的地方,工程中都要加上它的头文件INCLUDE += -I /opt/ffmpeg_build/include连接是还要指明它库所在的地方LIBS += /op/ffmpeg_build/lib/*.so有没有更简单的办法呢? 有添加默认的系统包含头文件, 就不用显式指明头文件了.export C_INCLUDE_PA.原创 2021-12-26 11:14:22 · 2294 阅读 · 0 评论 -
如何阅读大量带宏的c代码
宏有两大用途, 一是编码替换, 一是条件编译.当阅读代码时,如果有很多条件编译宏,那对阅读者就是一种梦驿.很多集成环境,很好的解决了条件宏问题. 它们令无效的语句为灰色.但普通编译器就没有这种能力了.如果只有普通编辑器, 又想知道宏的情况,怎么办呢? ,找gcc 解决.gcc 中的宏判别.gcc -E -dM null.c 查看内置的宏定义说明: 仅输出#define 命令, 输出简明.缺点: 由于所有的宏只是简单的堆在一起,也包含内置的宏且不分组,显得多而杂乱.适用于查找某个宏是否.原创 2021-04-01 16:36:15 · 712 阅读 · 0 评论 -
gcc 消除警告及其它
----------------------------------------消除 warning: "unused parameter xxxx"警告----------------------------------------如下定义一个宏即可:#define UNUSED(x) (void)x举例:UNUSED(argc);UNUSED(argv);------------------------------------------------------------gcc 关原创 2021-01-07 17:04:35 · 965 阅读 · 2 评论 -
gcc 的工作细节及使用技巧详解.
----------------------------------------gcc 的一些技巧。----------------------------------------查找,查看连接的库位置: gcc -v预处理过程:gcc -E, 可以看到头文件及宏展开后的形态。查找,查看宏定义位置,cpp -dD 可以显示宏定义过程。 -dM 还能显示预定义宏。 cpp -d...原创 2014-05-04 09:28:51 · 1133 阅读 · 0 评论 -
gcc 简单的 hello-world 到底连接了什么
gcc hello 到底连接了什么------------------------------------------------------------源代码:------------------------------------------------------------[hjj@hjj ~]$ cat test.c#include unsigned char原创 2014-06-19 14:14:15 · 11184 阅读 · 0 评论 -
gcc 直接连接与汇编连接的对比
gcc 连接与汇编,连接的对比。gcc 需要main符号, 汇编,连接需要_start.$ cat asm1.s# 调用号可以通过查询.datahello: .string "hello world\n".text# 汇编,连接必需定义入口, 符号名称是_start.globl _start_start: movl $4, %eax #调用号__原创 2016-09-18 16:29:38 · 813 阅读 · 0 评论 -
gcc -fomit-frame-pointer选项,-fno-dwarf2-cfi-asm 选项
gcc 选项 -fomit-frame-pointer 省略框架指针----------------------------------------1. 测试程序----------------------------------------$ cat hello.c#include void hi(void){ printf("hello\n");}原创 2015-12-17 11:32:09 · 1753 阅读 · 0 评论 -
configure 时-g 与 -O0 开关控制
实验了一下调试tslib首先是编译。1. 允许调试,如下配置。 ./configure --enable-debug --prefix=/opt但这样虽然增加了-g 选项,但仍然是-O2 优化,gdb debug 时会跳行,不爽。2. 变为-O0 选项,可以导出CFLAGS 变量,如下进行。export CFLAGS='-DGCC_HASCLASSVISIBIL原创 2015-10-17 10:38:40 · 6423 阅读 · 0 评论 -
用环境变量控制c/c++的条件编译
用环境变量控制c/c++的条件编译author:hjjdebugdate: 2012-09-06--------------------------------------------------------------------------------环境变量能影响什么?甲. 环境变量不能直接影响c/c++ 代码中的条件编译看下面例子:a. 书写代码gitser原创 2012-09-06 09:51:22 · 4264 阅读 · 1 评论 -
centos/ubutu x86-64 编译gcc-4.6.2 的经历
centos x86-64 编译gcc-4.6.2 的经历1. 下载了gcc 的源码,是4.6.2 的版本, 本机的为4.4.7, 64bits 机器编译编译经历缺少gmp,mpfr,mpc, 要求高于一定版本。自以为是的下载了高版本的gmp,mpfr,mpc, 随意选了自己喜欢的版本号. 这可能是问题的根源multilib 的问题,忘了具体错误。想到了, --disabl原创 2015-01-15 17:50:14 · 2219 阅读 · 1 评论 -
gcc 连接库文件的方法
----------------------------------------gcc 连接库文件的方法----------------------------------------一种是把.a 直接当.o 来连接一种是去掉lib 前导和 .a 后缀,用-l 来调用, 通常用于系统库。若是用户自定义的库,注意名称不要同其它文件冲突,感觉还不如直接当.o 来的更简单原创 2014-04-18 17:06:27 · 1185 阅读 · 0 评论 -
gcc 函数调用探测功能
----------------------------------------gcc 函数调用探测功能gcc -finstrument-functions 使用,man gcc 是很好的帮助。----------------------------------------收集一个函数调用的踪迹,一种方法是通过在函数的入口处和出口处插入一个打印语句来检测。这个过程非常繁琐,而且很容易出错...原创 2015-01-07 10:25:45 · 1371 阅读 · 0 评论 -
windows 下 c/c++ pragma 用法实例
pragma 是一条编译器的预处理命令,翻译为中文是杂注,编译注释的意思,常见的用法如下例:#pragma comment(lib,"msvcprtd")#pragma comment(lib,"uuid.lib")#pragma comment(linker,"/manifestdependency:\"type='win32' " \#pragma deprec...原创 2012-04-27 13:50:54 · 1507 阅读 · 1 评论 -
vc 编译连接错误汇总:
编译连接错误汇总:--------------------------------------------------------------------------------症状:d:\work\feature.h : warning C4819: The file contains a character that cannot be represented in the c原创 2014-06-26 09:00:30 · 841 阅读 · 0 评论