打印
[经验分享]

gcc编译器使用教程 基于Linux 环境(包含静态库 动态库生成使用)

[复制链接]
121|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jiangxiaopi|  楼主 | 2025-3-8 08:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


#gcc -o hello1 hello.c -v
# -o x y.c  生成可执行文件x ,依赖文件是y.c 此操作直接一步到位,把预处理,编译,汇编,链接操作全给做了直接一步到位生成可执行文件

# -v 意思是打印编译时候显示的信息
# -o 生成目标文件
# -I 指定头文件目录
# -L 指定链接时候的库文件目录
# -l 指定链接哪一库文件

#gcc hello.c #直接编译一步到位 生成个a.out可执行文件
#gcc -c main.c #直接 一步到位 包括预处理 编译 汇编 产生个mian.o 目标文件,如果文件名是ace.c 那就产生个ace.o目标文件

#cd source/

#gcc -E -o hello.i show_compile.c  # -E 预处理选项 hello.i产生预处理后的文件
#gcc -S -o hello.s hello.i # -S 编译程序 将预处理后的高级语言文件 编译成汇编文件
#gcc -c -o hello.o main.c  # -c选项 一步到位 把预处理 编译 汇编 全做了,直接生成个目标文件 hello.o
#gcc -o hello hello.o # -o 选项就是把目标文件进行个链接 将hello.o 以及其他的库文件.o文件 链接成个可执行文件hello

# gcc -c -o main.o main.c
# gcc -o test main.o -Lmath_lib/include/ -lmath



# 静态库使用教程 -Ldir dir是静态库的文件目录 ,-lname 假如 静态库是 libmath.a 则这个name 就是math
# gcc -o test main.c -Lmath_lib/include/ -lmath

# cd math_lib/
# ./compile.sh
# cd ..

./rm-rf.sh #把之前编译的文件全给删除了

# # -I math_lib/include 后边是跟的头文件目录  ./意思白哦是当前路径下
# gcc -c -o main.o main.c -I ./math_lib/include -I ./math_lib/library

# # 静态库使用教程 -Ldir dir是静态库的文件目录 ,-lname 假如 静态库是 libmath.a 则这个name 就是math
# gcc -o test main.o -Lmath_lib/library -lmath0 -lmath1 #math0是静态库0 math1是静态库1
# ./test #运行程序


# 包含头文件 -I math_lib/include 后边是跟的头文件目录  ./意思白哦是当前路径下
gcc -c -o main.o main.c -I ./math_lib/include -I ./math_lib/library

# 静态库使用教程 -Ldir dir是动态库的文件目录 ,-lname 假如 动态库是 libmath0.a 则这个name 就是math0
gcc -o test main.o -Lmath_lib/library -lmath  #math是动态库 math1是动态库1

#设置下程序中动态库的路径 因为程序运行时候需要调用 但是静态库就无需这样
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wls/emmd_-linux/4.0_makefile/math_lib/library
./test #运行程序



# 头文件知识介绍 #include <stdio.h>  #include "stdio.h"
#      < >的意思是去工具链指定目录查找头文件 ""的意思是去当前目录中去查找头文件
#  "math_lib/include/ar_opreat1.h"  除非你是像这样 在包含的时候直接指定头文件路径   
#  在编译的时候也可以 使用gcc命令进行 -I dir -I dir 指定单个或者多个头文件路径
#                                   dir 就是头文件路径 可以是绝对路径 也可以是相对路径



#gcc -o hello1 hello.c -v
# -o x y.c  生成可执行文件x ,依赖文件是y.c 此操作直接一步到位,把预处理,编译,汇编,链接操作全给做了直接一步到位生成可执行文件
# -v 意思是打印编译时候显示的信息
# -o 生成目标文件
# -I 指定头文件目录
# -L 指定链接时候的库文件目录
# -l 指定链接哪一库文件

# --- 以下没有指定 编译的.c文件路径 和 生成的目标文件.o 或者.i 或者可执行文件test的路径
# 那就默认是 他们都在同一级别的目录

#gcc hello.c #直接编译一步到位 生成个a.out可执行文件
#gcc -c main.c #直接 一步到位 包括预处理 编译 汇编 产生个mian.o 目标文件,如果文件名是ace.c 那就产生个ace.o目标文件
#gcc -E -o hello.i show_compile.c  # -E 预处理选项 hello.i产生预处理后的文件
#gcc -S -o hello.s hello.i # -S 编译程序 将预处理后的高级语言文件 编译成汇编文件
#gcc -c -o hello.o main.c  # -c选项 一步到位 把预处理 编译 汇编 全做了,直接生成个目标文件 hello.o
#gcc -o hello hello.o # -o 选项
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_57249200/article/details/132167374

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

90

帖子

0

粉丝