导航:首页 > 源码编译 > 编译gcc比较全的参数

编译gcc比较全的参数

发布时间:2025-02-25 18:41:17

‘壹’ GCC安全编译选项

各种安全选择的编译参数如下:

NX:-z execstack / -z noexecstack (关闭 / 开启)
Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启)
PIE:-no-pie / -pie (关闭 / 开启)
RELRO:-z norelro / -z lazy / -z now (关闭 / 部分开启 / 完全开启)

‘贰’ gcc的基本用法

在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
-c,只编译,不链接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
-O,对程序进行优化编译、链接,采用这个选项,整个源代码会在编译、链接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、链接,当然整个编译、链接过程会更慢。
-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <myinc.h>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。
-v gcc执行时执行的详细过程,gcc及其相关程序的版本号
原版gcc manual该选项英文解释
Print (on standard error output) the commands executed to run the stages of compilation. Also print the version number of the compiler driver program and of the preprocessor and the compiler proper.
编译程序时加上该选项可以看到gcc搜索头文件/库文件时使用的搜索路径!

‘叁’ linux 怎么编译c的源程序的gcc,编译命令是什么

在Linux下面,如果要编译一个C语言源程序,我们要使用gcc编译器。

先将源文件编译成目标文件:gcc - c hello.c

生成hello.o文件,再将目标文件编译成可执行文件:gcc -o hello hello.o

如:

int main(int argc,char **argv)

{

printf("Hello Linux ");

}

(3)编译gcc比较全的参数扩展阅读:

在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。

GCC最基本的用法是∶gcc [options] [filenames]

其中options就是编译器所需要的参数,filenames给出相关的文件名称。

网络_gcc

‘肆’ gcc编译程序时的命令行参数-I(大写i) -L -l (小写L) 2020-10-10

我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:

例:

gcc -Wall -I /home/hello/include -L /home/hello/lib main.c -l world -Wl,-rpath,/you/dir/name -o prog

上面这句表示在编译hello.c时:

-I(大写i) /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/include-->/usr/local/include

-L /home/hello/lib表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找的顺序是:/home/hello/lib-->/lib-->/usr/lib-->/usr/local/lib

-l(小写的L)world表示在上面的lib的路径中寻找libworld.so动态库文件(如果gcc编译选项中加入了“-static”表示寻找libworld.a静态库文件)

-rpath=dir
把目录添加到运行时类库搜索路径
-Wl,option
把选项传递给Linker.如果选项值包含逗号,就把他拆分成多个选项

-Wl,-rpath,/opt/lib
解决 error while loading shared libraries: ****.so: cannot open shared object file: No such file or directory

阅读全文

与编译gcc比较全的参数相关的资料

热点内容
什么app可以教你化妆 浏览:543
程序员加班996怎么过 浏览:823
有个什么tv美女直播app 浏览:856
编译gcc比较全的参数 浏览:201
stvd取消编译器优化 浏览:420
pdf存储格式 浏览:586
加密软件提取时没有这个键怎么办 浏览:911
可以用命令行做什么好玩的东西 浏览:134
荣耀30s带方丹编译器吗 浏览:53
黑甲虫加密软件加密后文件不见了 浏览:275
惠州程序员名单 浏览:178
java可移植性 浏览:739
加密卡写卡工具 浏览:394
德善缘app是干什么的 浏览:819
中山云存储服务器 浏览:687
google蜂鸟算法 浏览:944
为什么程序员这么受人诟病 浏览:100
linuxgtk编程 浏览:255
迪拜用什么app打车 浏览:634
java字符串不转义 浏览:310