当前位置:首页>Linux>BSP学习夯实基础:《嵌入式Linux应用开发完全手册》之交叉编译工具选项

BSP学习夯实基础:《嵌入式Linux应用开发完全手册》之交叉编译工具选项

  • 2026-03-26 08:31:41
BSP学习夯实基础:《嵌入式Linux应用开发完全手册》之交叉编译工具选项
Hello,大家好,我是程序媛MM。

本文约3500字,跟着前面写的帖子《一份靠谱的BSP开发学习路线》的路线图开始学起来,翻看了韦东山的《嵌入式Linux应用开发完全手册》,书籍有点偏老,不过有些东西基本变化不大,尤其关于交叉编译这一块。本文仔细阅读了这部分内容并整理了学习笔记。

日常遇到交叉编译的问题,都是将出错信息对照去找出解决办法,东拼西凑的感觉,读完这部分内容,很多之前遇到的问题都很明了了。

关注公众号, 即可获得与Linux相关的电子书籍(含韦东山的《嵌入式Linux应用完全手册》)以及常用开发工具,文末有文档清单。


嵌入式开发中,宿主机(如x86 PC)与目标机(如ARM开发板)架构、指令集不同,无法直接用本地编译器(gcc)生成可运行程序,需通过交叉编译工具链将代码“翻译”为目标平台可识别的机器指令。《嵌入式Linux应用开发完全手册》这本书第三章重点讲解交叉编译工具的核心选项,是解决交叉编译报错、确保程序正常运行的基础,需重点掌握每个选项的作用、使用场景及常见误区。

一 交叉编译工具链基础认知


嵌入式Linux开发中常用的交叉编译工具链以目标架构为前缀(如ARM架构常用arm-linux-gnueabihf-),完整工具链包含编译器(gcc/g++)、链接器(ld)、二进制工具(objcopy、objdump等),各工具选项相互配合,完成从源码到可执行文件的全流程,其核心是“适配目标平台”,避免出现架构不兼容、库缺失等问题。

关键前提:工具链选择需遵循“三重匹配”原则——目标架构匹配(32位/64位ARM)、浮点单元匹配(硬浮点/软浮点)、系统库匹配(glibc/uClibc版本),否则即使编译通过,程序也无法在目标机运行。

二 核心交叉编译工具及选项说明


围绕4类工具展开:arm-linux-gcc(编译器)、arm-linux-ld(链接器)、arm-linux-objcopy(格式转换工具)、arm-linux-objdump(反编译工具),以下是各工具高频选项的详细说明,结合书中要点及实际开发避坑补充。

[1].arm-linux-gcc 选项

作用:将C/C++源码预处理、编译、汇编为目标平台的目标文件(.o),核心选项聚焦“目标适配、编译控制、依赖管理”,是交叉编译中最易出错的环节。

1. 目标平台与架构相关选项(必用)

-march=arch:指定目标CPU架构,如ARM架构常用armv7-a(Cortex-A系列)、armv8-a(64位ARM),需严格匹配开发板CPU型号。若不指定,可能生成目标机不支持的指令,导致“非法指令”错误。

示例:arm-linux-gnueabihf-gcc -march=armv7-a main.c -o app

-mtune=cpu:优化目标CPU的指令执行效率,如mtune=cortex-a53,无需严格匹配CPU型号,但需与-march兼容,提升程序运行速度。

-mfloat-abi=abi:指定浮点运算ABI,对应目标机的浮点支持模式——硬浮点(hf,有FPU硬件)用hard,软浮点(无FPU,软件模拟)用soft,需与工具链前缀匹配(如arm-linux-gnueabihf-对应hard),否则会出现浮点运算错误。

2. 编译流程控制选项(常用)

-E:仅执行预处理,不进行编译、汇编,输出预处理后的源码(如展开头文件、替换宏定义),用于排查头文件引用错误。

示例:arm-linux-gnueabihf-gcc -E main.c -o main.i

-S:编译后停止,不进行汇编,输出汇编代码(.s文件),用于分析编译后的汇编指令,排查代码效率或语法问题。

示例:arm-linux-gnueabihf-gcc -S main.c -o main.s

-c:预处理、编译、汇编完成后停止,不进行链接,生成目标文件(.o文件),用于多文件编译(先编译各模块,再链接)。

示例:arm-linux-gnueabihf-gcc -c main.c -o main.o

-o file:指定输出文件名称,若不指定,默认输出a.out(可执行文件),是所有编译命令的必备选项之一。

示例:arm-linux-gnueabihf-gcc main.c -o app(生成ARM架构可执行文件app)

3. 依赖与警告控制选项(避坑关键)

-I(大写i)dir:指定头文件搜索路径,解决“找不到头文件”报错(常见于引用自定义头文件或目标机系统头文件)。需注意路径为目标机的头文件路径,而非宿主机路径。

示例:arm-linux-gnueabihf-gcc -I/opt/arm-rootfs/usr/include main.c -o app

-L dir:指定库文件搜索路径,解决“找不到库文件”报错,用于链接自定义库或目标机系统库。

示例:arm-linux-gnueabihf-gcc main.c -L/opt/arm-rootfs/usr/lib -lm -o app(-lm表示链接数学库)

-l(小写l)library:指定要链接的库文件,编译器会自动在-L指定路径和系统默认路径中搜索“liblibrary.a”(静态库)或“liblibrary.so”(动态库)。

常用示例:-lc(链接C标准库)、-lpthread(链接线程库)、-lm(链接数学库)

-Wall:显示所有警告信息(如未定义变量、类型不匹配),建议始终添加,提前排查潜在错误,避免警告升级为运行时问题。

-v:显示编译全过程的详细信息(包括工具链版本、头文件/库文件搜索路径),用于排查工具链配置错误或路径问题。

4. 调试与优化选项(实用)

-g:生成调试信息(支持gdb调试),嵌入式开发中用于排查程序崩溃、逻辑错误,发布时需去掉该选项(减少程序体积)。

示例:arm-linux-gnueabihf-gcc -g main.c -o app(可通过arm-linux-gdb调试app)

-O0/-O1/-O2/-O3:优化等级,控制程序体积和运行效率——O0(无优化,默认,调试首选)、O1(基础优化)、O2(常用优化,平衡体积和效率)、O3(最高优化,可能导致调试困难),根据开发阶段选择。

-static:静态链接所有依赖库,生成独立可执行文件,无需目标机依赖对应动态库,解决“目标机动态库缺失”问题,但会增大程序体积。

示例:arm-linux-gnueabihf-gcc main.c -o app -static

[2].arm-linux-ld 选项(链接器,核心用于目标文件链接)

作用:将多个目标文件(.o)、库文件链接为最终的可执行文件,核心是“指定链接规则、内存布局”,书中重点讲解以下常用选项,避免链接报错。

-T script.lds:指定链接脚本(最核心选项),链接脚本定义了程序在内存中的布局(如代码段、数据段、bss段的起始地址),嵌入式开发中必须指定(尤其是裸机程序、内核驱动),否则会使用默认链接脚本,导致程序无法在目标机内存中正确加载。

示例:arm-linux-ld -T app.lds main.o -o app

-o file:指定链接后的输出文件名称,与gcc的-o选项功能一致。

-L dir:指定链接时的库文件搜索路径,与gcc的-L选项一致,可通用。

-l library:指定链接的库文件,与gcc的-l选项一致,链接时会自动查找对应库文件。

-nostdlib:不链接系统标准启动文件和标准库文件,仅链接指定的目标文件和库文件,常用于裸机程序开发(无需依赖Linux系统库)。

-Wl,option:将option选项传递给链接器,用于传递复杂的链接参数,如指定输出格式、内存地址等。

[3].arm-linux-objcopy 选项(格式转换工具,必备)

作用:将链接后的可执行文件(ELF格式)转换为目标机可直接加载的格式(如二进制文件.bin、镜像文件.hex),嵌入式开发中,目标机(开发板)通常无法直接运行ELF文件,需通过该工具转换。

-O(大写o)format:指定输出文件格式,常用格式:

- binary:二进制文件(.bin,最常用,可直接烧写到开发板Flash);

- ihex:Intel十六进制文件(.hex,用于部分单片机开发);

示例:arm-linux-objcopy -O binary app app.bin(将ELF文件app转换为二进制文件app.bin)

-S:忽略符号表和调试信息,减小输出文件体积(发布时常用)。

-I(大写i)format:指定输入文件格式,默认是ELF格式,一般无需手动指定(链接后的文件默认是ELF格式)。

[4].arm-linux-objdump 选项(反编译工具,调试/排查必备)

作用:对可执行文件、目标文件进行反编译,查看汇编代码、符号表、文件结构,用于排查程序崩溃、指令错误、链接问题(如“未定义引用”),是嵌入式调试的核心工具之一。

-d:对可执行文件的代码段进行反编译,输出汇编代码,用于分析程序执行流程、排查指令错误。

示例:arm-linux-objdump -d app > app.dis(将app的反编译结果保存到app.dis文件,便于查看)

-h:查看文件的段信息(代码段.text、数据段.data、bss段等),包括各段的起始地址、大小,用于验证链接脚本是否正确配置。

-t:查看文件的符号表,包括变量、函数的地址和名称,用于排查“未定义引用”(符号未找到)、符号重复定义等链接错误。

-x:查看文件的所有头信息和符号表,信息最全面,用于排查文件格式错误、工具链不兼容问题。

三 书中重点强调的交叉编译常见问题与规避方法


书中明确指出,交叉编译的核心痛点的是“适配”,多数报错源于选项使用不当或工具链不匹配,结合书中要点及实际开发补充以下高频问题:

报错1:找不到头文件(fatal error: xxx.h: No such file or directory)

原因:未用-I指定头文件路径,或路径指向宿主机而非目标机的头文件;

解决:用-I指定目标机系统头文件路径(如/opt/arm-rootfs/usr/include),确保头文件是目标架构对应的版本。

报错2:找不到库文件(undefined reference to `xxx')

原因:未用-L指定库路径,或未用-l指定库名称,或库文件是宿主机架构(x86)而非目标架构(ARM);

解决:用-L指定目标机库路径,用-l指定正确的库名称,确保库文件是用对应交叉编译器编译的目标架构版本。

报错3:目标机运行提示“文件格式错误”或“非法指令”

原因:工具链与目标机架构不匹配(如用32位工具链编译64位ARM程序),或未指定-march选项,生成了目标机不支持的指令;

解决:选择匹配目标机的工具链(如64位ARM用aarch64-linux-gnu-),添加-march指定正确的CPU架构,用file命令验证文件架构(如file app查看是否为ARM格式)。

报错4:运行时提示“动态库缺失”(error while loading shared libraries: libxxx.so)

原因:程序动态链接了目标机不存在的库,或库版本不匹配;

解决:用readelf -d app | grep NEEDED查看依赖的动态库,将缺失的库复制到目标机/lib目录,或用-static选项静态链接核心库。

报错5:链接时提示“未定义引用”(undefined reference to `main')

原因:未指定入口函数,或链接脚本配置错误(未指定代码段起始地址);

解决:确保源码中有main函数(应用程序),裸机程序需在链接脚本中指定入口函数(如_start),检查链接脚本的段布局是否正确。

四 学习总结


[1]. 交叉编译工具选项的核心是“适配目标平台”,所有选项的使用都需围绕“目标机架构、内存布局、依赖库”展开,脱离目标机的选项配置毫无意义。

[2]. 重点掌握arm-linux-gcc的路径指定(-I、-L)、架构指定(-march)、调试与优化选项,以及arm-linux-ld的链接脚本选项(-T),这是解决交叉编译80%报错的关键。

[3]. 工具链的选择与配置是基础,需严格遵循“三重匹配”原则,避免因工具链不兼容导致后续所有编译、运行问题。

[4]. 反编译工具(objdump)是排查问题的“利器”,遇到编译、链接、运行报错时,可通过反编译查看代码、符号、段信息,快速定位问题根源。

[5]. 书中强调,交叉编译基础知识是嵌入式Linux开发的“基石”,后续内核移植、驱动开发、应用程序开发都离不开这些选项的灵活使用,需多动手实践,结合报错场景加深理解,避免死记硬背。

以上为全文内容。

往期文章(欢迎订阅技术分享栏目全部文章):

【从零开始撸内核驱动源码】:以ttyserial(串口驱动)为例,串联字符设备驱动基础知识点的学习计划
Linux内核源码顶层 Makefile分析并单独编译调试内核自带的驱动
【从零开始撸内核驱动源码】:ttynull驱动
Linux内核驱动安装失败问题调试及解决方法
Linux内核驱动源码走读之编译内核及外部驱动实操指南

谢谢你看到这里

这里是女程序员的笔记本

 15年+嵌入式软件工程师兼二胎宝妈

分享读书心得、工作经验,自我成长和生活方式。

希望我的文字能对你有所帮助

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 11:46:31 HTTP/2.0 GET : https://f.mffb.com.cn/a/481840.html
  2. 运行时间 : 0.151618s [ 吞吐率:6.60req/s ] 内存消耗:4,904.99kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=09337653494eefceadc207c5e20f78cc
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000354s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000499s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000255s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000300s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000529s ]
  6. SELECT * FROM `set` [ RunTime:0.000194s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000578s ]
  8. SELECT * FROM `article` WHERE `id` = 481840 LIMIT 1 [ RunTime:0.012266s ]
  9. UPDATE `article` SET `lasttime` = 1774583191 WHERE `id` = 481840 [ RunTime:0.002228s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000311s ]
  11. SELECT * FROM `article` WHERE `id` < 481840 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000460s ]
  12. SELECT * FROM `article` WHERE `id` > 481840 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.004119s ]
  13. SELECT * FROM `article` WHERE `id` < 481840 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008195s ]
  14. SELECT * FROM `article` WHERE `id` < 481840 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.026915s ]
  15. SELECT * FROM `article` WHERE `id` < 481840 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.023651s ]
0.153212s