首页
学习
活动
专区
圈层
工具
发布

第009课 gcc和arm-linux-gcc和Makefile

查看gcc编译器的版本,显示gcc执行时的详细过程 -o 指定输出文件名为file,这个名称不能跟源文件名同名 -E 只预处理,不会编译、汇编、链接t -S 只编译,不会汇编、链接 -c 编译和汇编,不会链接...一个c/c++文件要经过预处理、编译、汇编和链接才能变成可执行文件。...gcc -v -nostdlib -o hello hello.o: 会提示因为没有链接系统标准启动文件和标准库文件,而链接失败。...gcc -c -o hello.o hello.c gcc -static -o hello_static hello.o 第003节c语言指针复习1_指向char和int的指针 日常中,我们把笔记写到记事本中...比较时间:比较a.o和a.c的时间,如果a.c的时间比a.o的时间更加新的话,就表明a.c被修改了,同理b.o和b.c也会进行同样的比较。

5.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    gcc和g++的区别

    gcc和g++都是GNU(组织)的一个编译器。...2.编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉...误区三:编译只能用gcc,链接只能用g++ 严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。...因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。...gcc和g++的区别  我们在编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而c++代码用g++,或者说编译用gcc,链接用g++,一时也不知哪个说法正确

    3.3K10

    vsnprintf字符串格式化输出实例:日志中打印程序名和行号

    这里使用一个简单的C程序例子,演示在打印源程序文件名和该打印函数所在的行号的同时,使用vsnprintf函数打印个数未知的参数变量。...需要说明的三个地方: 1 2 3 静态全局变量 c_FileName 和 i_FileLineNum 分别用于存储源程序文件名和打印函数所在的行号; 自定义标识符 PRINT 先调用源程序文件名和行号的赋值函数...Get_File_Line ,然后调用个数未知的参数的处理函数 F_vsnprintf; 类似于sprintf和snprintf这两个函数,相比vsprintf函数,vsnprintf加了最大字节(...vfhky 2016-03-13 23:28 https://typecodes.com/cseries/vsnprintffilenameline.html * @Compile gcc...return 0; } 2 编译执行 使用《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》一文中的Makefile文件进行程序编译(当然也可以使用命令进行编译gcc

    98310

    C:基于可以自动扩展缓冲区的stringbuffer,实现内存格式化输出(bufprintf)

    最近做一个C语言的嵌入式项目,需要分段向指定内存调用vsnprintf输出不定长度的格式化输出,因为是分段输出,而且长度不定,所以一开始就不能分配固定长度内存,每次输出都要从输出到上次的结尾开始,所以还要记录每次的输出长度...为了解决这个麻烦,我参照Java中的StringBuffer对象,实现了一个 stringbuffer,并基于它实现bufprintf函数可以向stringbuffer格式化输出,调用时就不需要再考虑自动分配内存和偏移量的问题了...(pbuf->buffer + pbuf->offset, bufsz, fmt, args); va_end(args); if (wsz < 0) { /** GCC在调用失败时会返回负值...(output, bufsz, fmt, args2); va_end(args2); assert(wsz < bufsz); } else { printf("vsnprintf...gcc下编译也很简单: >gcc stringbuffer_test.c >a.exe sbuf content: hello jerry welcome to my party

    59020

    GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

    二、GCC内部结构: GCC内部结构主要由Binutils、gcc-core、Glibc等软件包组成。 1. Binutils:它是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。...gcc编译流程分为四个步骤:预处理、编译、汇编、链接。个人认为预处理和编译主要由gcc-core来完成,汇编和链接主要由Binutils来完成。那么何时用到glibc呢?...glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。...个人认为要了解arm-linux-gcc与GCC的关系和区别,这个问题才是关键所在。...六、arm-linux-gcc和arm-elf-gcc: arm-elf-gcc跟arm-linux-gcc一样,也是是基于ARM目标机的交叉编译软件。

    8.8K10

    gcc命令

    在Linux底下搞开发,不可避免的要使用到gcc,gcc选项众多,下面记录下常见的一些选项,网上好多博客也说这个但是很多的都是不对的,我的博客记录参见man gcc,应该还是比较准的 常用的选项: gcc...GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff....还有其它的几个选项,比如-Os和-Og和-Ofast,相关的使用能够说明大家自己man看一下就明白了,这里我直说常用的选项 -D(定义宏) 就相当与你用#define定义的宏一样,比如定义宏DEBUG...比如: gcc -c hello.c -l(链接动态连接库so) -Ldir 搜索动态连接库,使用-L和-l -L Add directory dir to the list of directories...-L在指定路径后并没有指定目标文件,所以要用到-l 参数指定文件 比如: gcc -o hello hello.c -I..

    1.5K80

    GCC、CMake 和 vcpkg 的关系与应用

    跨平台支持:GCC 支持多种操作系统(如 Linux、Windows、macOS)和硬件平台。...特点 开源:GCC 是自由软件,广泛应用于开源项目。 跨平台:支持多种操作系统和架构。 直接编译:开发者需要手动管理编译选项和依赖。 二....灵活性:支持多种构建工具(如 Make、Ninja)和编译器(如 GCC、Clang、MSVC)。 适合大型项目:简化复杂项目的构建过程。...四、三者关系 GCC 负责将源代码编译成可执行文件或库文件,它是 CMake 和 vcpkg 的基础工具;vcpkg 负责下载安装和管理第三方库,依赖于GCC来编译库文件;CMake 生成适合不同平台的构建文件...三者的协同工作示例 如:使用 GCC、CMake 和 vcpkg 构建一个依赖 Boost 库的项目 安装 vcpkg git clone https://github.com/microsoft/vcpkg

    66520
    领券