随笔分类 -  gcc_make

gcc &gdb
摘要:转自:在应用程序中替换Linux中Glibc的malloc的四种方法--csdn 打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc、realloc、calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工作量,部分没有权限 阅读全文
posted @ 2022-10-16 23:57 yuxi_o 阅读(611) 评论(0) 推荐(0) 编辑
摘要:linux要在windows下编译运行,需要win下的gcc编译器,一般有两种:MinGW和Cygwin。 但某些函数在windows没有,即使使用两种工具也编译不过,需要查询windows函数并使用,例如网路socket等。 MinGW参考: MinGW安装教程( MinGW - Minimali 阅读全文
posted @ 2019-12-08 18:45 yuxi_o 阅读(1423) 评论(0) 推荐(0) 编辑
摘要:除了板卡厂商提供的交叉编译工具链外,还存在通用的交叉编译工具链。常用的有:arm-linux-gnueabihf-gcc和arm-none-linux-gnueabi-gcc。 Ubuntu命令安装 $ sudo apt-get install g++-5-arm-linux-gnueabihf g 阅读全文
posted @ 2019-10-10 20:42 yuxi_o 阅读(1524) 评论(0) 推荐(0) 编辑
摘要:一般Linux软件使用configure来检测系统生成makefile文件之后可使用make来编译安装软件。 configure的配置选项有哪些呢?现简单收集如下,不断更新中。 以gcc -v为例,可查看gcc的configure配置选项: $ gcc -v Using built-in specs 阅读全文
posted @ 2019-10-01 19:04 yuxi_o 阅读(2478) 评论(0) 推荐(0) 编辑
摘要:m4 是 POSIX 标准中的一部分,所有版本的 UNIX 下都可用。虽然这种语言可以单独使用,但大多数人需要 m4 仅仅是因为 GNU autoconf 中的 “configure” 脚本依赖它。宏处理器(或预处理器)一般用作文本替换工具。最终用户经常会用它来处理要反复使用的文本模板,典型的是用于 阅读全文
posted @ 2017-08-13 23:39 yuxi_o 阅读(569) 评论(0) 推荐(0) 编辑
摘要:区别 常用的可执行文件包含两类:原始二进制文件(bin)和可加载执行的二进制文件,在linux中可加载执行的二进制文件为elf文件。 BIN文件是直接的二进制文件,内部没有地址标记。bin文件内部数据按照代码段或者数据段的物理空间地址来排列。一般用编程器烧写时从00开始,而如果下载运行,则下载到编译 阅读全文
posted @ 2017-07-25 23:56 yuxi_o 阅读(4570) 评论(0) 推荐(0) 编辑
摘要:转自:嵌入式系统可执行文件格式 UBOOT编译映像格式(uboot) UBOOT编译完成后,可以得到u-boot各种格式的映像文件和符号表 u-boot.bin: u-boot映像原始的二进制格式 u-boot: u-boot映像的ELF格式 u-boot.srec: u-boot映像的S-Reco 阅读全文
posted @ 2017-07-25 23:56 yuxi_o 阅读(596) 评论(0) 推荐(0) 编辑
摘要:makefile是为组织程序工程的,其定义的宏怎样应用到c程序中呢? 我们知道Makefile中可定义变量或导出变量,make命令可定义变量;编译器(如gcc)可通过CFLAGS定义宏。 但如何才能使Makefile或make命令用变量控制C程序呢? C程序可以接收编译器定义的宏,通过-D指定。ma 阅读全文
posted @ 2017-03-31 23:32 yuxi_o 阅读(3095) 评论(0) 推荐(0) 编辑
摘要:用法 函数调用后,返回值可以当变量使用。 函数调用,很像变量使用,以$来标识,语法如下: $(<function> <arguments>) 或${<function> <arguments>} 函数名与参数间“空格”分隔,参数间以“逗号”分隔。为使风格统一,函数和变量的括号最好一样,如: $(su 阅读全文
posted @ 2017-03-31 23:27 yuxi_o 阅读(656) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.tuicool.com/articles/EvIzUn gcc 的 -g ,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根据调试工具的不同,还能直接选择更有针对性的说明,比如 -ggdb 。-g是一个编译选项,即在源代码编 阅读全文
posted @ 2016-11-14 20:24 yuxi_o 阅读(741) 评论(0) 推荐(0) 编辑
摘要:工具链软件包括BINUTILS、GCC、GLIBC、GDB等。 BINUTILS是二进制程序处理工具,包括链接器、汇编器等目标程序处理的工具。 GCC(GNU Compiler Collection)是编译器。对于C/C++语言的完整支持,需要支持glibc库。 GLIBC是应用程序编程的函数库软件 阅读全文
posted @ 2016-10-30 11:21 yuxi_o 阅读(4785) 评论(0) 推荐(0) 编辑
摘要:cmake官网:https://cmake.org/ CMake Tutorial https://gitlab.kitware.com/cmake/community/-/wikis/home CMAKE简明教程 CMAKE教程 CMake 用法总结 CMake是一个跨平台的安装(编译)工具,可以 阅读全文
posted @ 2016-09-25 15:39 yuxi_o 阅读(1354) 评论(0) 推荐(0) 编辑
摘要:自动生成Makefile GNU提供的autoconf和automake两套工具可自动完成符合自由软件惯例的makefile的编写。这样就可以像常见的GNU程序一样,只要使用“./configure”,“make”,“make install”就可以把程序安装到linux系统中去了。 Makefil 阅读全文
posted @ 2016-06-08 10:28 yuxi_o 阅读(963) 评论(0) 推荐(0) 编辑
摘要:GNU MAKE--工程管理 makefile是为工程组织编译,为“自动化编译”,一旦写成,只需要一个make命令,整个工程完全自动编译,极大提高了软件开发效率。make是一个命令工具,是一个解释makefile中指令的命令工具。一般来说,大多数IDE都有这个命令,如Delphi的make,Visu 阅读全文
posted @ 2016-06-03 14:33 yuxi_o 阅读(334) 评论(0) 推荐(0) 编辑
摘要:一、启动GDB调试 使用gdb调试首先在编译程序时加上-g参数: $ gcc –g –o foo foo.c $ gcc -ggdb3 -o test test.c ggdb3告诉gcc,使用gdb的扩展产生调试符号。其中“3”表示使用的是第三级(最高级)调试信息。 启动gdb调试有多种方法,可以根 阅读全文
posted @ 2016-04-25 09:48 yuxi_o 阅读(416) 评论(0) 推荐(0) 编辑
摘要:一. 共享库生成 组成共享库的目标文件和一般目标文件有所不同,在编译时要加-fPIC选项(生成与位置无关代码 Position Independent code)。 $gcc -c -fPIC stack/stack.c stack/push.c stack/pop.c stack/is_empty 阅读全文
posted @ 2015-10-14 20:19 yuxi_o 阅读(512) 评论(0) 推荐(0) 编辑
摘要:库文件名都是以lib开头的,静态库以a作为后缀,表示archive。 创建静态库: ar rs libstack.a stack.o push.o pop.o is_empty.o ar把目标文件打包成静态库; r表示将后面的文件列表添加到文件包,若果文件包不存在就创建它; s是专用于生成静态库的, 阅读全文
posted @ 2015-10-14 20:13 yuxi_o 阅读(526) 评论(0) 推荐(0) 编辑
摘要:一、基础 ld:GNU的链接器。用来把一定量的目标文件跟档案文件链接在一起,并重新定位它们的数据,链接符号引用。一般编译一个程序时,最后一步就是运行ld进行链接。每一个链接都被一个链接脚本所控制,这个脚本是用链接命令语言书写的。 链接脚本的一个主要目的是描述输入文件中的各个段(数据段,代码段,堆,栈 阅读全文
posted @ 2015-10-14 19:39 yuxi_o 阅读(589) 评论(0) 推荐(0) 编辑
摘要:编译器内置宏: 先介绍几个编译器内置的宏定义,这些宏定义不仅可以帮助我们完成跨平台的源码编写,灵活使用也可以巧妙地帮我们输出非常有用的调试信息。 ANSI C标准中有几个标准预定义宏(也是常用的): __LINE__:在源代码中插入当前源代码行号; __FILE__:在源文件中插入当前源文件名; _ 阅读全文
posted @ 2015-09-05 18:02 yuxi_o 阅读(715) 评论(0) 推荐(0) 编辑
摘要:1. 开启core dump功能ulimit -c unlimited2. gdb 可执行文件 corefile 一运行gdb,一般就可看到异常原因,之后运行bt显示详细栈信息,进一步确认原因。 3. coredump文件位置配置: 静态配置永久有效: /etc/sysctl.conf文件配置: k 阅读全文
posted @ 2015-08-10 22:34 yuxi_o 阅读(193) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示