编译与链接
编译与链接
DADA2ndTIAN
这个作者很懒,什么都没留下…
展开
-
解决Kconfig中help信息在窗口不显示问题
今天在 buildroot 下面 make menuconfig 碰到 Kconfig配置的help 无法显示,排查了半天,最后是因为文件格式为dos , 调整回 unix 就OK了vim 下面 输入:setfileformat=unix原创 2021-11-04 16:51:34 · 260 阅读 · 0 评论 -
menuconfig 如何撤销输入
make menuconfig有时需要修改数值,可以按着Ctrl+<–(ctrl加退格键 即可删除)原创 2021-04-20 08:00:26 · 325 阅读 · 0 评论 -
makefile 基础
常用函数src = $(wildcard ./*.c )匹配当前工作目录下的所有.c文件,组成列表,赋值给变量srcobj = $(patsubst %.c ,%.o,$(src))将参数3中,包含参数1的部分替换为参数2命令前 加 - 表示指令执行出错,不报错,顺序执行结束make 选项选项说明-n显示要执行的命令,但并未真正执行自动化变量$@:在规则命令中,表示规则中的目标$^:在规则命令中,表示规则中所有依赖条件$<:在规则命令中,表示原创 2020-12-05 13:03:06 · 101 阅读 · 0 评论 -
linux makefile 编译 问题 command not found
clean::rm -f xxx如上 报错 /bin/sh : 1:rm : not found修改为下面格式后OKclean::@rm -f xxx原创 2020-07-22 10:35:41 · 3112 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VREVRE = “Hello World!”elseendififeq ($(OPT),define)VRE ?= “Hello World! First!”endififeq ($(OPT),add)V...转载 2020-02-17 17:27:17 · 310 阅读 · 0 评论 -
交叉编译工具链的命名规则
文章目录交叉编译工具链的命名规则实例1 arm-none-eabi-gcc2 arm-none-linux-gnueabi-gcc3 arm-eabi-gcc4 armcc5 arm-none-uclinuxeabi-gcc 和 arm-none-symbianelf-gccarm-none-uclinuxeabiABI 和 EABIABI:6 arm-linux-gnueabi-gcc ...转载 2020-01-17 15:22:07 · 771 阅读 · 0 评论 -
静态链接和动态链接及其区别
前言我们知道编译器会将程序源文件编译成一个个目标文件,并最终链接成可执行程序或者静态库或动态库,静态库一般都是指的由静态链接的目标文件集合,而动态库一般是动态链接目标生成的目标集合,那么静态链接和动态链接到底是什么什么是静态链接什么是动态链接区别...原创 2020-01-11 23:11:24 · 1968 阅读 · 0 评论 -
使用gcc生成静态库
gcc -c source1.c source2.c …ar -rs xxx.a source1.o source2.o …原创 2020-01-11 23:10:07 · 233 阅读 · 0 评论 -
ldd 查看程序依赖的共享库
#ldd 程序名/库名原创 2020-01-07 17:48:42 · 269 阅读 · 0 评论 -
共享库的创建和安装
生成共享库#gcc -shared -fPIC -W1,-soname,libxxx.so.1 -o libxxx.so.x.y.z source_files1 source_file2 … -llib1 -lib2…-soname 用来指定共享库的so-name ,如果不指定,默认没有so-name,那么用ldconfig 更新软连接将没有效果,也就是说依赖改共享库的程序将不能使用so...原创 2020-01-01 23:18:21 · 562 阅读 · 0 评论 -
Linux 共享库版本及查找路径规则
文章目录命名规则linux共享库版本命名SO-NAME软连接链接名共享库系统路径查找规则命名规则linux共享库版本命名libname.so.x.y.z前缀lib,中间是库的名字和后缀.so,后面的三个数字组成版本号,“x”表示主版本号,“y”表示此版本号,“z”表示发布版本号,这个三个版本号的具体含义:主版本号:表示库的重大升级,不同版本号的库之间是不兼容的,依赖与旧的版本号的程序要...原创 2020-01-01 21:04:46 · 1088 阅读 · 0 评论 -
gcc 编译选项介绍
文章目录宏定义选项-Wl,-Bstatic &-Wl,-Bdynamic宏定义定义说明_GNU_SOURCEglibc 默认不自动支持GNU扩展,一般加上该选项,避免编译问题_GNU_SOURCE: glibc does not make the GNU extensions available automatically. If a program de...原创 2019-12-14 20:45:42 · 3603 阅读 · 0 评论 -
简单多文件makefile 实例
实例BIN_NAME = ***//指定可执行文件名CC=xxx/bin/arm-none-linux-gnueabi-gcc //编译器CFLAGS=-D_GNU_SOURCE -//指定头文件路径及宏定义LDDIR = -L/home/zhousj/suikong_s920/firmware/staging_dir/target-arm-none-linux-gnueabi/usr/l...原创 2019-12-14 20:44:12 · 374 阅读 · 0 评论 -
gcc程序的编译过程和链接原理
转自:https://blog.csdn.net/czg13548930186/article/details/78331692一、C/C++文件的编译过程:先来看一下gcc的使用方法和常用选项 提示:gcc –helpⅠ、使用方法:gcc [选项] 文件名Ⅱ、常用选项: 选项 含义 -v 查看gcc编译器的版本,显示gcc执行时的详细...转载 2018-09-11 14:23:49 · 1697 阅读 · 0 评论 -
解决gcc的error: useless storage class specifier in empty declaration
原本头文件如下定义,编译报错“error: useless storage class specifier in empty declaration” typedef enum{ MCU_CMD_MSG, MCU_ACK_MSG, MCU_UNKNOWN_MSG, };typedef enum{ COMM_STATE_IDLE, ...原创 2018-06-28 21:49:12 · 8652 阅读 · 0 评论