当前位置: 首页 > news >正文

网站seo链接购买公司网站开发策划书

网站seo链接购买,公司网站开发策划书,品牌建设论文参考文献,中卫网站设计公司有哪些1.相关疑问 1. 为什么在代码里使用了一个未定义过的函数#xff08;如add()#xff09;#xff0c;在编译阶段不会报错#xff0c;在链接阶段会报错呢#xff1f; 答#xff1a;先说几个代码编译的结论#xff1a; 单个\.c源文件文件被编译成机器码文件时#xff0c…1.相关疑问 1. 为什么在代码里使用了一个未定义过的函数如add()在编译阶段不会报错在链接阶段会报错呢 答先说几个代码编译的结论 单个\.c源文件文件被编译成机器码文件时源文件中的所有变量名以及数组名都会变成地址偏移量类型信息都会变成指令的长度(int\-\subl, 地址\-\subg)循环会变成goto的方式实现函数的调用变成了使pc指针移动到被调方函数的地址 由以上第四条可知函数的调用依赖于被调函数的地址编译后的文件可以使用nm xxx.o来查看所有函数的地址和函数名的对应情况在链接之前可以看到此时有的函数名还没有对应的地址而将这些函数名和地址关联起来的操作就是链接阶段要做的事在链接阶段无法为主调方找到被调方函数地址时就会报链接错误。 2. gcc编译器 1. 预处理指令 #include引入头文件 #define定义宏常量和宏函数 #if根据指定条件判断是否编译后续代码块可作为测试代码开关 // 使用示例 #define DEBUG 1 #if DEBUG// Debugging codeprintf(Debug mode is active.\n); #endif#ifdef判断某个标识符是否已经定义可作为测试代码开关 #ifdef ON //表示如果定义了ON或命令行编译时用-D传了ON就执行下面的输出printf(ON is defined!\n); #elseprintf(ON is not defined!\n); #endifprintf(main exit\n);可以在命令行定义预处理器宏gcc -o test test.c -DON #ifndef判断某个标识符是否没有已经定义可用于头文件保护 #ifndef TEST_H#define TEST_H #endif#endif结束条件编译的代码块 2. gcc常用指令 补充 列出所有函数nm test.o 查看可执行程序链接了哪些库ldd test 预处理 gcc -E test.c -o test.i编译 gcc -S test.c -o test.s汇编 // 方式一从汇编文件到机器码文件 as test.s -o test.o // 方式二从预处理文件到机器码文件 gcc-13 -C test.i -o test.o // 方式三从源文件到机器码文件 gcc-13 -C test.c -o test.o链接gcc -o test test.c 输出可执行文件 // 方式一编译链接从源文件到可执行文件 gcc -o test test.c // 方式二链接 gcc -o test test.o // 方式三指定链接路径 gcc test1.o -o test1 -ladd // 还可以使用ld命令可以调用静态链接器 ld test.o [其他系统库文件] -o test定义宏 gcc test1.o -o test1 -D DEBUG制定优化级别 gcc test1.o -o test1 -O0 // 推荐O1级别为gdb补充符号信息 gcc test1.o -o test1 -O0 -g // 要用gdb调试时最好指定不优化避免机器码和代码不一致影响调试提示警告 gcc test1.o -o test1 -Wall // 注意Wall是大写W指定头文件搜路径 gcc test1.o -o test1 -I ../h //默认从当前路径下搜索3. gdb调试 补充 用gdb调试时传递命令行参数的两种方式 方式一进入gdb后用set args xxx方式二进入gdb前使用gdb --args test xxx启动 1. 常用指令 用-g生成可执行文件gcc –o test test.c -O0 –g 进入调试器gdb test 显示代码 默认显示l/list //默认显示10行显示指定信息l/list [文件名:]行号or函数名 //[]表示可有可无 运行r/run 退出q/quit 断点相关 设置断点b/break 4 //在第四行设置断点列出断点i b/info break // 查看断点号删除断点delete 断点号停止断点disable 断点号激活断点enable 断点号 跳转 下一步不进入函数n/next //F10下一步进入函数s/step //F11到下一个断点c/continue跳出当前函数finsh 查看信息 打印变量p/print自动显示的表达式内容display 表达式 (自动显示内存display /1xw i)停止显示某个表达式undisplay 表达式 或者 undisplay 编号(通过info display查看编号)查看调用堆栈b t/back trace查看内存xn/f/u //n表示内存的长度 f表示内存的格式 u表示内存的单位清空信息 Ctrl L 组合键或者输入 shell clear 命令shell命令用于调用系统断点shell 2. 调试core文件 启用 core 文件自动生成 查看core文件是否存在限制ulimit -a关闭限制ulimit -c unlimited 运行程序并生成 core 文件 如果未生成则使用man core查看帮助文档解决 使用 GDB 调试 core 文件gdb test core;查看调试信息 查看调用栈bt 查看栈帧信息frame 0显示寄存器的值info registers分析内存x 4. 静态库和动态库 库文件其实就是别人造好的“轮子”别人写好并编译好后给用户使用的二进制代码。 静态库文件在程序的链接阶段被需要而动态库文件在程序运行过程中也被需要。 1. 静态库 在程序链接阶段库文件会被打包进最终的可执行程序。 gcc编译时如果存在同名的动态(.so)和静态(.a)库文件默认是使用动态文件此时要使用静态库文件就必须要使用-static参数指定优先静态链接如果找不对应的\.a文件会链接失败。 特点省心但体积大且更新不方便。 打包命令 // 1. 得到编译后的机器码文件 gcc -c add.c -o add.o // 2. 生成静态库文件库文件必须以lib开头 ar crsv libadd.a add.o // 3. 将静态库文件移动到/usr/lib或/usr/local/lib下推荐前者 sudo mv libadd.a /usr/lib // 4. 使用即可 gcc main.o -o main -ladd2. 动态库 链接阶段不打包进程序在程序运行时加载。 特点体积小、更新方便动态更新但容易存在依赖问题。 打包命令 // 1. 生成位置无关的目标代码使用-fpid(Position Independent Code) gcc -c add.c -o add.o -fpic // 2. 生成动态库文件库文件必须以lib开头 gcc -shared add.o -o libadd.so // 3. 将静态库文件移动到/usr/lib或/usr/local/lib下推荐前者 sudo mv libadd.so /usr/lib // 4. 使用即可 gcc main.o -o main -ladd3. 产品动态更新 原理利用版本号和软连接实现 第一步生成带版本好的.so动态库文件如libadd.so.0.0.0、libadd.so.0.1.0第二步建立最新版本的软连接sudo ln -s libadd.so.0.1.0 libadd.so
http://www.zqtcl.cn/news/271460/

相关文章:

  • 哪个网站的课件做的好源码之家关闭了
  • 各大网站热搜榜排名嵊州网站
  • 在哪找做网站的镇江网页设计工作室
  • 做网站的是干嘛的百度推广的几种方式
  • 临沧网站建设用eclipse做jsp网站
  • 做物流运输网站电话做网站看
  • 山东公司网站推广优化什么网站做宣传好
  • 企业网站模板设计外网vp(永久免费)加速器下载
  • 消费者联盟网站怎么做中山网站建设案例
  • 郑州市多商家网站制作公司网站建设要学多少课程
  • 现在网站开发模式淄博网站建设设计公司
  • 瑶海合肥网站建设东莞网站优化多少钱
  • pc蛋蛋游戏体验网站建设大型门户网站建设效果好吗
  • 昆明网站建设制作汽车之家官网网页版入口
  • 诸城建设局网站免费的创建个人网站
  • 网站建设工作下步打算上海搬家公司电话查询
  • 如何将自己做的网站推广出去大型网站方案
  • 深圳做网站排名哪家好贵阳景观设计公司
  • 做图片网站中英网站搭建报价表
  • 酒类网站该怎么做网站建设协议
  • 怎么打帮人 做网站开发的广告双语言网站模版
  • 企业网站建设的实验报告广告公司网站建设方案
  • 安徽茶叶商城网站建设贵阳市花溪区建设局网站
  • 广西网站建设制作推广普通话倡议书
  • 最新网站建设的模板下载小制作作文400字
  • 海南省城乡建设部网站首页央视新闻
  • 高端白酒品牌有哪些网站怎么做才能得到更好的优化
  • 北京安慧桥网站建设青之峰做网站
  • 免费制作网站的平台推广网站多少钱
  • 怎么增加网站的收录量广西建设厅网站地址