![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译相关
文章平均质量分 68
it潮人
这个作者很懒,什么都没留下…
展开
-
CMakeLists.txt的用法
一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。他们之间的调用关系复杂而严格,如果我想在这样复杂的框架下进行二次开发,显然只拥有它的源码是远远不够的,还需要清楚的明白这几十个项目之间的复杂关系,在没有原作者的帮助下进行这项工作几乎是不可能的。将他的命令解析出来一条一条执行。转载 2024-03-14 17:31:42 · 178 阅读 · 0 评论 -
20-Openwrt crond crontab
crond和corntab都是busybox下的一个工具,crond是一个后台进程,每隔一分钟读取配置文件中的参数,执行对应的动作。任务添加到/etc/crontabs/root里面之后,要等下一分钟才可以生效到,因为crond进程每隔一分钟才执行一次,如果想马上生效,就重启crond进行/etc/init.d/crond restart。上面的crontab命令其实是个鸡肋,直接用cat/vi查看修改/etc/crontabs/root文件就行了。一般就设置-c指定文件目录,-l日志等级。转载 2024-01-10 10:34:15 · 274 阅读 · 0 评论 -
19-Openwrt双固件升级
在上一章节《Openwrt sysupgrade系统升级》中,我们描述了sysupgrade升级系统的过程,这种升级过程会直接firmware分区进行写入,无法保证系统的安全性,只要在写入过程突然断电就会出现系统写入失败,升级失败无法启动系统的问题。1.根据sysupgrade的过程,将固件进行校验写入,不过写入的时候将升级文件写入到备份分区firmware_backup,不直接写主分区firmware。2.写完备份分区后,设置备份分区写入完成标志位(一般会开辟一块很小的分区用来写标志位),然后重启系统。转载 2024-01-10 10:23:56 · 165 阅读 · 0 评论 -
18-Openwrt sysupgrade系统升级
openwrt的升级是使用sysupgrade工具来升级的,该工具为sbin下面的一个脚本,可以附带很多参数,但是我们一般就直接sysupgrade openwrt-ramips-mt7621-device-squashfs-sysupgrade.如果sysupgrade的时候带参数-n,sysupgrade -n openwrt-ramips-mt7621-device-squashfs-sysupgrade. bin,则会将SAVE_CONFIG=0.转载 2024-01-10 10:08:07 · 606 阅读 · 0 评论 -
17-Openwrt banner文件生成
这个文件存放在如下位置:./package/base-files/files/etc/banner,所以我们只需要修改这个文字的内容就可以。©著作权归作者所有:来自51CTO博客作者creator_ly的原创作品,请联系作者获取转载授权,否则将追究法律责任。在每次串口或ssh登录后台的时候,一按回车键就会出现openwrt的字段,如果想换成自己自定义的内容如何实现。17-Openwrt banner文件生成。版本Barrier Breaker。banner:语牌和横幅。转载 2024-01-10 10:01:59 · 111 阅读 · 0 评论 -
16-Openwrt patch生成
编译,拷贝内核头文件到工具链/19.07/staging_dir/toolchain-aarch64_cortex-a53_gcc-8.3.0_musl/include/linux$中。新建两个目录,原始uhttpd-2019-08-17-6b03f960.org/和修改后的uhttpd-2019-08-17-6b03f960.81/将生成出来的1001-add-xxx-support.patch拷贝到patches即可。使用如下命令生成patch。使用如下命令生成patch。转载 2024-01-10 09:53:49 · 119 阅读 · 0 评论 -
CMakeList.txt
注意 main.cc 的第一行,这里引用了一个 config.h 文件,这个文件预定义了 USE_MYMATH 的值。版权声明:本文为CSDN博主「阿飞__」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。这样 cmake 会自动根据 CMakeLists.txt 配置文件中的设置自动生成 config.h 文件。NDK 学习系列:Android NDK 从入门到精通(汇总篇)编写 config.h.in 文件。转载 2024-01-10 09:21:59 · 110 阅读 · 0 评论 -
CMakeLists.txt详解
上述命令的解释为:用gcc工具编译当前目录下source文件夹中的所有的.c文件 生成目标为test的可执行文件且将其放在当前目录下的bin文件夹中,其所用到的头文件所在路径为当前目录下的include文件夹,动态库文件路径为当前目录下的lib文件夹,编译时需要用到的动态库为库名所对应的.so动态库。因此,慎用,会影响全局target。例:aux_source_directory(${PROJECT_SOURCE_DIR}/ DIR_SRCS) 表示把工程目录的源文件添加到DIR_SRCS变量中。转载 2024-01-10 09:17:25 · 312 阅读 · 0 评论 -
Makefile中的$@, $^, $< , $?, $%, $+, $*
1、$@ 表示目标文件$^ 表示所有的依赖文件$< 表示第一个依赖文件表示比目标还要新的依赖文件列表$% 仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是“foo.a(bar.o)”,那么,“$%”就是“bar.o”,“$@”就是“foo.a”。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。$+ 这个变量很像“$^”,也是所有依赖目标的集合。只是它不去除重复的依赖目标。转载 2023-08-17 16:27:55 · 2481 阅读 · 0 评论 -
内核编译
PATH:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin:/pi/bsp/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/ #32位环境,5、编译完成后,在/arch/arm/boot目录下可以看到ZImage,就是编译生成的新内核。使用sudo apt-get install libssl-dev来安装libssl-dev。转载 2023-07-18 15:30:40 · 45 阅读 · 0 评论 -
如何在makefile里面添加打印?
使用info/warning/error增加调试信息方法1: $(info, "here add the debug info")但是此不能打印出.mk的行号方法2: $(warning, "here add the debug info")方法3: $(error "error: this will stop the compile")这个可以停止当前makefile的编译方法4: 打印变量的值$(info, $(TARGET_DEVICE) )...原创 2021-07-20 17:02:48 · 4798 阅读 · 0 评论 -
Makefile中的常用函数 - 字符串和文件
makefile函数转载 2022-07-23 08:22:33 · 1165 阅读 · 0 评论 -
define 与typedef的区别
define与typedef转载 2022-07-23 08:14:08 · 936 阅读 · 0 评论 -
Makefile中 -I -L -l区别
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时:-I /home/hello/include表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include-->/usr/incl转载 2022-02-28 11:22:52 · 656 阅读 · 0 评论 -
Makefile文件基本格式
以下是Makefile的基本模板#指定编译器CC = g++#指定编译参数CFLAGS = -std=c++11#指定头文件路径,此处用于指定非标准库的头文件路径INC = -I./ -I /usr/include#指定要链接的动态库或静态库 -L是指定动态库路径,非标准的动态库需要此参数LIBS = -lm -ldl -L/mylibs/xxx -lxxx#把上面放一起CXXFLAGS = ${CFLAGS} ${INC} ${LIBS}#指定生成可执行文件名称EXEC =转载 2022-02-25 17:49:02 · 663 阅读 · 0 评论 -
Makefile的使用技巧
Makefile的使用技巧1、 makefile中的两种变量Ø COMPILE=$(CC)$(CFLAGS) -c在使用COMPILE的时候,CC和CFLAGS才会展开,并且是每次都会展开,所以当定义COMPILE的时候,即使CC和CFLAGS还没有值,都没有关系,只要当使用COMPILE时,CC和CFLAGS有值就可以了。OBJS=$(wildcard *.o)OBJS每次在引用的时候,获取目标文件的列表,每一次可能都不同,并且每次计算通配符导致运行速度变慢。Ø COMPIL.转载 2020-11-02 10:43:53 · 320 阅读 · 0 评论 -
关于编译错误、告警的一些记录
1、warning: declaration of 'tb' shadows a global declarationd.c:32: warning: shadowed declaration is here出现这种警告的时候,查看您的变量声明与函数参数中的名字是否相同,修改为不同的名字既可解决。2、...原创 2019-07-10 16:40:39 · 3439 阅读 · 0 评论