GCC
【转】检查Linux系统下是否安装了gcc、pcre、zlib、openssl环境
1. 查看gcc环境 gcc -v 如果Linux系统没有安装gcc编译器,会提示“Command not found”。如果系统上安装了gcc编译器,这条命令就会显示出当前安装的gcc编译器是哪个版本。下图展示为已安装的信息。 2. 查看pcre环境 rpm -qa pcre 看到pcre的版本, ......
linux开发之gcc与g++区别,静态库、动态库
gcc 广义上指GNU编译器套装(英语:GNU Compiler Collection,缩写为GCC)是GNU计划制作的一种优化编译器,支持各种编程语言、操作系统、计算机系统结构。 狭义上指GNU C语言编译器(GNU C Compiler)。 常用gcc/g++参数。 |编译选项|说明| |:-| ......
gcc降级
$ sudo apt remove gcc $ sudo apt-get install gcc-7 g++-7 -y $ sudo ln -s /usr/bin/gcc-7 /usr/bin/gcc $ sudo ln -s /usr/bin/g++-7 /usr/bin/g++ $ sudo l ......
借用gcc内置函数帮助C来实现函数重载
借用gcc内置函数__builtin_choose_expr和__builtin_types_compatible_p可以帮助c来实现函数重载。 首先对这两个函数功能做下介绍 __builtin_choose_expr(expr,expr1,expr2)与c语言:?运算符有些类似,如果expr表达式 ......
C语言GCC编译错误(收集)
错误一: 实参类型不兼容 这是Linux 下编写的 UDP 方式通信的服务器端代码: int ret_rec = recvfrom(soc_fd, // 上面定义的 UDP 套接字 msg, // 接收数据缓存区 128, // 接收数据缓冲区,大小 0, // 和发送端一样的标记 from_add ......
关于gcc设置入口函数的讨论
关于gcc设置入口函数的讨论 一般的程序入口函数是_start(不是main,参考【2】)。 如果我们想在main之前做点啥工作,或者希望链接一个项目的main.o对象,就需要另外指定入口函数。 虽然gcc提供了指定入口函数的参数,但我发现往往不是我们想要的。 gcc的指定入口函数参数 gcc提供了 ......
gcc链接时打桩
gcc 链接时打桩 链接时打桩简单分析 链接时打桩本质是在重定位解析符号的时候,做了手脚。 假设main.o用到外部符号malloc,malloc的定义本来在libc中,直接链接给定-L/path/to/libc.so -lc, main.o中malloc的地址就链接到了libc.so中的符号。 链 ......
ubuntu升级gcc和g++
下载安装 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-9 sudo apt-get install g++-9 配置为默认选项 sudo update ......
gcc栈溢出保护机制:stack-protector
引用:https://www.cnblogs.com/arnoldlu/p/11630979.html 1. gcc栈保护机制stack-protector简介 gcc提供了栈保护机制stack-protector。关于stack-protector包含三个选项,分别是stack-protector ......
__thread详解(gcc关键字)
__thread详解(gcc关键字) Thread Local Storage线程局部存储(tls)是一种机制,通过这一机制分配的变量,每个当前线程有一个该变量的实例. // 释义__thread是GCC内置的线程局部存储设施,其存储效率可以和全局变量相比;__thread变量在每一个线程中都有一份 ......
linux下gcc/g++版本切换
因为一些道不清说不明的原因,经常需要用到不同的gcc版本 这里先提一个事情,自己编译gcc版本的事情,翻自己的记录(doc文件吧) 然后提下,在ubuntu下,默认gcc版本是11,但需要12版本,安装指令: sudo apt install gcc-12 g++-12 -y 安装完成后,继续执行下 ......
clang和gcc一些不同
环境 -m32 -O0 x86-64 clang 12.0.0 x86-64 gcc 10.1 不同 栈帧开辟 int main(){ int a=1; int b=2; } 在clang下开辟栈帧的代码是这样的。 pushl %ebp movl %esp, %ebp subl $8, %esp 局 ......
在 Debian 11 安装 GCC
步骤 1. 在我们安装任何软件之前,通过apt在终端中运行以下命令来确保您的系统是最新的很重要: sudo apt update sudo apt upgrade sudo apt install build-essential 步骤 2. 在 Debian 11 上安装 GCC。 默认情况下,GC ......
win10下安装gcc
win10下安装gcc news来源:原创2023/3/31 14:31:11 win10下安装gcc 一、gcc是什么? 1.1、安装gcc 第一次安装,记录一下 一、gcc是什么? GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fort ......
gcc编译流程
gcc编译流程 一、GUN工具 编译工具:把一个源程序编译为一个可执行程序 调试工具:能对执行程序进行源码或者汇编级调试 软件工程工具:用于协助多人开发或者大型软件项目的管理。如make、CVS、Subvision 其它工具:用于把多个人件链接成可执行文件的连接器,或者用作格式转换的工具 二、GCC ......
gcc升级最简单的方法
安装scl yum -y install centos-release-scl 通过centos-release-scl源安装devtoolset包 yum -y install devtoolset-9 说明: devtoolset-6对应gcc 6.x.x版本 devtoolset-7对应gcc ......
pwn学习笔记-什么是gcc、libc、glibc、libc++、libstdc++
在做pwn题目的时候总是会遇到自己不熟悉,不会的内容,每次都觉得非常难整理和理清,不如每遇到一次就做一次笔记,方便随时复盘。 gcc gcc在我学习c语言的时候,编译阶段有用到,和pwn题貌似关系不大,放一放。 libc libc是Linux下的标准C语言库,也是当初写helloworld里包含的头 ......
gcc g++ 动态库,静态库的编译
首先 来看看静态库: 总体的说明: 怎么创建静态库: 网上的截图如下; 怎么使用静态库: 静态库 在使用的时候, 直接./ 就可以了。 动态库在执行的时候 还要加上别的参数,做指明。这里写错了, 动态库的执行 也是 ./main 这种方式。 静态库 在制作可执行文件的时候, 是将库一起加到 可执行文 ......
centos 7 手动编译升级gcc9.3.0
1、下载gcc9.3.0源码包 wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz sudo tar xvf gcc-9.3.0.tar.gz ./contrib/download_prerequi ......
GCC的头文件搜索路径
在 C 和 C++ 中,有两种头文件包含方式,引号和尖括号形式,这两种形式的搜索路径是不一样, 搜索路径的顺序如下所示: 对于引号形式的 include 指令,会首先搜索包含当前文件的目录 对于引号形式的 include 指令,通过 -iquote 选项指定的目录将会以从左往右的顺序进行搜索。 通过 ......
GCC中的aligned和packed属性
GCC支持用__attribute__为变量、类型、函数、标签指定特殊属性。这些不是编程语言标准里的内容,而属于编译器对语言的扩展。 本文介绍其中的两个属性:aligned和packed。 aligned aligned属性最常用在变量声明上。它的作用是告诉GCC,为变量分配内存时,要分配在对齐的内 ......
Centos 安装 arm-linux-gnueabihf-gcc (armcc交叉工具链)
环境:CentOS 64位 准备工作: 1. 在linux系统的/usr/local/新新建(mkdir)arm文件夹,并改权限(chmod)为777。 mkdir arm 【新建 /usr/local/arm/ 目录】 chmod 777 arm 【修改此文件夹的权限 ,可用 命令 # cd -l ......
arm-none-linux-gnueabi-gcc: not found 的解决办法
在Ubuntu下安装了ARM交叉编译器,在验证交叉编译器是否能够使用的时候,出现了arm-none-linux-gnueabi-gcc 找不到的错误!如下所示 出现这种情况的原因是:在64位Linux系统下无法兼容32位交叉编译器 安装32位的库,64位的Linux系统能够兼容arm-linux-g ......
Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink
记录一下过程. Arm Mbed 应该属于Arm的机构或者是Arm资助的机构. 常用的 DAPLink 基本上都是从这个项目派生的. 仓库主要是使用 Keil, 对 GCC 的支持是 2020 年才正式合并进来的. Ubuntu 下使用 GCC Arm 编译 ......