首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux从入门到入土③(GCC、静态与动态链接库、Git、Make、Makefile)

可以使用gcc -v查看自己的linux中是否安装了gcc如果我们要编译的是c语言文件我们使用gcc,而如果我们要编译的是c++文件,我们要使用g++GCC基本语法gcc [option | filename.../test //执行可执行程序静态与动态链接库不管是 Linux 还是 Windows 中的库文件其本质和工作模式都是相同的,只不过在不同的平台上库对应的文件格式和文件后缀不同。...动态链接库是程序运行时加载的库,当动态链接库正确部署之后,运行的多个程序可以使用同一个加载到内存中的动态库,因此在 Linux 中动态链接库也可称之为共享库。...动态链接库是目标文件的集合,目标文件在动态链接库中的组织方式是按照特殊方式形成的。库中函数和变量的地址使用的是相对地址(静态库中使用的是绝对地址),其真实地址是在应用程序加载动态库时形成的。...-fPIC 或 -fpic 参数的作用是使得 gcc 生成的代码是与位置无关的,也就是使用相对位置。-shared参数的作用是告诉编译器生成一个动态链接库

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

    linuxgcc使用方法_linux怎么用gcc编译

    命令概述 gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。...gcc是GNU编译器套件(GNU Compiler Collection),它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和D语言的前端,也包括了这些语言的库(如...GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。此处,“自由”的含义是它尊重用户的自由。 02. 命令格式 用法:gcc [选项] 文件… 03....4.9 多文件编译方法二 [deng@localhost bak]$ gcc -c test.c [deng@localhost bak]$ gcc -c testfun.c [deng@localhost...bak]$ gcc test.o testfun.o -o test [deng@localhost bak]$ 到此这篇关于Linux gcc命令的具体使用的文章就介绍到这了,更多相关Linux gcc

    6.7K20

    Linux gcc使用基础

    gcc 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。gcc 编译器通常以 Linux 命令的形式在终端(Shell/Bash)中使用。...\n"); } 使用gcc编译: gcc hello.c 使用ls命令查看当前目录,多出一个a.out可执行文件,运行: ./a.out Hello World!...注意:编译阶段可以添加-O参数进行程序优化,或是-Wall参数显示详细的编译信息,如: gcc -O -c thanks.c thanks_2.c gcc -Wall -c thanks.c thanks...后面的-L参数用于指定库的搜索路径,由于Linux的默认库的位置就是在lib文件目录下,因此可以省略不写,如果是其它的第三方库,则需要指明库文件的位置。...参考:《鸟哥的Linux私房菜 (基础学习篇 第三版)》

    3.2K10

    浅谈Linux的动态链接库

    ldd命令查看动态链接库依赖 在Linux上,动态链接库有默认的部署位置,很多重要的库放在了系统的/lib和/usr/lib两个路径下。...动态链接库查找过程 刚才提到,Linux的动态链接库绝大多数都在/lib和/usr/lib下,操作系统也会默认去这两个路径下搜索动态链接库。...GCC编译选项 使用GCC编译链接时,有两个参数需要注意,一个是-l(小写的L),一个是-L(大写的L)。...我们前面曾提到,Linux有个约定速成的规则,假如库名是name,那么动态链接库文件名就是libname.so。在使用GCC编译链接时,-lname来告诉GCC使用哪个库。...如果动态链接库文件在/path/to/library,库名叫name,编译链接的方式如下: $ gcc -L/path/to/library -lname myfile.c

    9K30

    Linux动态链接库的使用

    动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。...例如下面实现一个简单的整数四则运输的动态链接库,定义的caculate.h和caculate.c两个文件,生产libcac.so动态链接库。...LSB executable file sum.o // ELF 64-bit LSB relocatable 因为sum.c里面含有可复用的函数,所以想把sum.c编译成为一个动态链接库 gcc sum.o...,需要在.o文件生成时加参数-fPIC gcc -c sum.c -fPIC -o sum.o gcc sum.o -o shared sum.so 一般,共享库的编译命令为(曾经的实验) 动态链接库...gcc -shared -fPIC -o libmyhello.so hello.o gcc -o hello main.c -L.

    4.7K10

    Linux 编译安装 GCC 4.8

    Linux 编译安装 GCC 4.8 详见: Linux 编译安装 GCC 4.8 GCC4.8发布啦,这个脚本在之前4.7的基础上做了点改进,移除一些过时的组件,增加了检测不到时自动下载源码包 PS:...4.8.1开始全面支持C++11特性,并且脱离了ppl库,gdb也开始脱离ppl库了 编译安装 GCC 4.8.X 准备环境及依赖项 支持 ISO C++ 98 的编译器(GCC 4.7.2 的中期一个...目录中的infrastructure目录下载 ) cloog 版本0.18.1(此处可下载 ftp://gcc.gnu.org/pub/gcc/infrastructure/ ) 我编译的环境...4.4.7 or gcc 4.1.2 or gcc 4.4.5 编译的依赖库: gmp 6.0.0a mpfr 3.1.2 mpc 1.0.2 isl 0.11.1 cloog 0.18.1...到4.8.3,更新gdb到7.7.1,完全移除对ppl的依赖,同步gcc4.9编译脚本中修复的一些问题,增加编译选项等 2015-02-09 更新gcc到4.8.4(未测试,貌似这个版本加入了

    7K20

    Linuxgcc的使用

    静态链接的优缺点 区分动/静态链接 查看链接属性 指定静态链接 总结 编译的过程 在正式开始之前首先对编译和链接进行一个整体的了解 1.预处理阶段 a.预处理工作:展开头文件,去注释,宏替换和删除 gcc...:sudo yum -y install gcc b.外部定义宏参数 gcc test.c -DSHOW//在外部给test.c定义宏SHOW gcc+文件名不加任何选项就是直接将源代码翻译成可执行程序...代码冗余量高 因为有大量的拷贝内容,所以静态链接形成的可执行程序比较大 区分动/静态链接 查看链接属性 file+可执行程序文件名 知道是动态链接以后还可以使用ldd+可执行程序文件名来查看所依赖的动态链接库...动态链接库:前缀为lib,后缀为.so 静态链接库:前缀为lib,后缀为.a libc.so.6去掉前缀lib和后缀.so以及版本号.6,最后只剩下c,所以这个是C标准库 指定静态链接 当我不指定时...Linux将自动采用动态链接,如果要使用动态链接就要在编译生成可执行文件时加上static选项gcc test.c -o mytest -static 如果系统中没有动态库只有静态库,那么即使不指定

    3K00

    Linux 编译安装 GCC 4.8

    Linux 编译安装 GCC 4.8 详见: Linux 编译安装 GCC 4.8 GCC4.8发布啦,这个脚本在之前4.7的基础上做了点改进,移除一些过时的组件,增加了检测不到时自动下载源码包 PS:...4.8.1开始全面支持C++11特性,并且脱离了ppl库,gdb也开始脱离ppl库了 编译安装 GCC 4.8.X 在执行 install.sh 脚本前安装 ncurses-devel 和 python-devel..., 用于编译gdb和开启python功能 安装完成后,把[GCC源码目录]/libstdc++-v3/python 复制到[用户目录]/.gdb 编辑[用户目录]/.gdbinit,添加 编译安装gdb...GMP到5.1.3 2013-12-13 更新binutils到2.24,更新gdb到7.6.2,移除对ppl的依赖,显式开启gold等一些选项,显式开启链接时优化选项 2014-05-23 更新gcc...到4.8.3,更新gdb到7.7.1,完全移除对ppl的依赖,同步gcc4.9编译脚本中修复的一些问题,增加编译选项等 2015-02-09 更新gcc到4.8.4(未测试,貌似这个版本加入了jit)

    4.6K50
    领券